James Hawkins : advpack: Forward RunSetupCommandA to its Unicode counterpart.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Mar 24 07:13:12 CST 2006


Module: wine
Branch: refs/heads/master
Commit: 478712a27d4c8da764b8cd06fee5512049f44d10
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=478712a27d4c8da764b8cd06fee5512049f44d10

Author: James Hawkins <truiken at gmail.com>
Date:   Thu Mar 23 23:11:15 2006 -0600

advpack: Forward RunSetupCommandA to its Unicode counterpart.

---

 dlls/advpack/advpack.spec |    2 +-
 dlls/advpack/install.c    |   49 ++++++++++++++++++++++++++++++++++++++++-----
 2 files changed, 45 insertions(+), 6 deletions(-)

diff --git a/dlls/advpack/advpack.spec b/dlls/advpack/advpack.spec
index 7a71d77..4c84cb3 100644
--- a/dlls/advpack/advpack.spec
+++ b/dlls/advpack/advpack.spec
@@ -63,7 +63,7 @@
 @ stdcall RegSaveRestoreOnINF(ptr str str str long long long) RegSaveRestoreOnINFA
 @ stdcall RegisterOCX(ptr ptr str long)
 @ stdcall RunSetupCommandA(long str str str str ptr long ptr)
-# stdcall RunSetupCommandW(long wstr wstr wstr wstr wptr long ptr)
+@ stdcall RunSetupCommandW(long wstr wstr wstr wstr ptr long ptr)
 @ stdcall RunSetupCommand(long str str str str ptr long ptr) RunSetupCommandA
 @ stdcall SetPerUserSecValuesA(ptr)
 @ stdcall SetPerUserSecValuesW(ptr)
diff --git a/dlls/advpack/install.c b/dlls/advpack/install.c
index f67c63c..55c7703 100644
--- a/dlls/advpack/install.c
+++ b/dlls/advpack/install.c
@@ -26,6 +26,7 @@
 #include "winuser.h"
 #include "winreg.h"
 #include "winver.h"
+#include "winternl.h"
 #include "setupapi.h"
 #include "advpub.h"
 #include "wine/debug.h"
@@ -158,6 +159,44 @@ HRESULT WINAPI LaunchINFSectionExA( HWND
 /***********************************************************************
  *      RunSetupCommandA  (ADVPACK.@)
  *
+ * See RunSetupCommandW.
+ */
+HRESULT WINAPI RunSetupCommandA(HWND hWnd, LPCSTR szCmdName,
+                                LPCSTR szInfSection, LPCSTR szDir,
+                                LPCSTR lpszTitle, HANDLE *phEXE,
+                                DWORD dwFlags, LPVOID pvReserved )
+{
+    UNICODE_STRING cmdname, infsec;
+    UNICODE_STRING dir, title;
+    HRESULT hr;
+
+    TRACE("(%p, %s, %s, %s, %s, %p, 0x%08lx, %p)\n",
+           hWnd, debugstr_a(szCmdName), debugstr_a(szInfSection),
+           debugstr_a(szDir), debugstr_a(lpszTitle),
+           phEXE, dwFlags, pvReserved);
+
+    if (!szCmdName || !szDir)
+        return E_INVALIDARG;
+
+    RtlCreateUnicodeStringFromAsciiz(&cmdname, szCmdName);
+    RtlCreateUnicodeStringFromAsciiz(&infsec, szInfSection);
+    RtlCreateUnicodeStringFromAsciiz(&dir, szDir);
+    RtlCreateUnicodeStringFromAsciiz(&title, lpszTitle);
+
+    hr = RunSetupCommandW(hWnd, cmdname.Buffer, infsec.Buffer, dir.Buffer,
+                          title.Buffer, phEXE, dwFlags, pvReserved);
+
+    RtlFreeUnicodeString(&cmdname);
+    RtlFreeUnicodeString(&infsec);
+    RtlFreeUnicodeString(&dir);
+    RtlFreeUnicodeString(&title);
+
+    return hr;
+}
+
+/***********************************************************************
+ *      RunSetupCommandW  (ADVPACK.@)
+ *
  * Executes an install section in an INF file or a program.
  *
  * PARAMS
@@ -183,14 +222,14 @@ HRESULT WINAPI LaunchINFSectionExA( HWND
  * BUGS
  *   Unimplemented
  */
-HRESULT WINAPI RunSetupCommandA(HWND hWnd, LPCSTR szCmdName,
-                                LPCSTR szInfSection, LPCSTR szDir,
-                                LPCSTR lpszTitle, HANDLE *phEXE,
+HRESULT WINAPI RunSetupCommandW(HWND hWnd, LPCWSTR szCmdName,
+                                LPCWSTR szInfSection, LPCWSTR szDir,
+                                LPCWSTR lpszTitle, HANDLE *phEXE,
                                 DWORD dwFlags, LPVOID pvReserved )
 {
     FIXME("(%p, %s, %s, %s, %s, %p, 0x%08lx, %p): stub\n",
-           hWnd, debugstr_a(szCmdName), debugstr_a(szInfSection),
-           debugstr_a(szDir), debugstr_a(lpszTitle),
+           hWnd, debugstr_w(szCmdName), debugstr_w(szInfSection),
+           debugstr_w(szDir), debugstr_w(lpszTitle),
            phEXE, dwFlags, pvReserved);
     return E_UNEXPECTED;
 }




More information about the wine-cvs mailing list