wine/dlls/advapi32 advapi32.spec advapi.c

Alexandre Julliard julliard at wine.codeweavers.com
Fri Nov 4 05:15:18 CST 2005


ChangeSet ID:	21107
CVSROOT:	/opt/cvs-commit
Module name:	wine
Changes by:	julliard at winehq.org	2005/11/04 05:15:18

Modified files:
	dlls/advapi32  : advapi32.spec advapi.c 

Log message:
	Mike McCormack <mike at codeweavers.com>
	Implement advapi32.CommandLineFromMsiDescriptor. It's a wrapper for
	msi.MsiProvideComponentFromDescriptor.

Patch: http://cvs.winehq.org/patch.py?id=21107

Old revision  New revision  Changes     Path
 1.79          1.80          +1 -1       wine/dlls/advapi32/advapi32.spec
 1.33          1.34          +19 -4      wine/dlls/advapi32/advapi.c

Index: wine/dlls/advapi32/advapi32.spec
diff -u -p wine/dlls/advapi32/advapi32.spec:1.79 wine/dlls/advapi32/advapi32.spec:1.80
--- wine/dlls/advapi32/advapi32.spec:1.79	4 Nov 2005 11:15:18 -0000
+++ wine/dlls/advapi32/advapi32.spec	4 Nov 2005 11:15:18 -0000
@@ -62,7 +62,7 @@
 @ stdcall CloseEventLog (long)
 @ stdcall CloseServiceHandle(long)
 # @ stub CloseTrace
-@ stdcall CommandLineFromMsiDescriptor(wstr wstr ptr)
+@ stdcall CommandLineFromMsiDescriptor(wstr ptr ptr)
 # @ stub ComputeAccessTokenFromCodeAuthzLevel
 @ stdcall ControlService(long long ptr)
 # @ stub ControlTraceA
Index: wine/dlls/advapi32/advapi.c
diff -u -p wine/dlls/advapi32/advapi.c:1.33 wine/dlls/advapi32/advapi.c:1.34
--- wine/dlls/advapi32/advapi.c:1.33	4 Nov 2005 11:15:18 -0000
+++ wine/dlls/advapi32/advapi.c	4 Nov 2005 11:15:18 -0000
@@ -266,9 +266,24 @@ BOOL WINAPI LogonUserW( LPCWSTR lpszUser
     return TRUE;
 }
 
-DWORD WINAPI CommandLineFromMsiDescriptor(WCHAR *Descriptor, WCHAR *CommandLine,
- DWORD *CommandLineLength)
+typedef UINT (WINAPI *fnMsiProvideComponentFromDescriptor)(LPCWSTR,LPWSTR,DWORD*,DWORD*);
+
+DWORD WINAPI CommandLineFromMsiDescriptor( WCHAR *szDescriptor,
+                    WCHAR *szCommandLine, DWORD *pcchCommandLine )
 {
-    FIXME("stub (%s)\n", debugstr_w(Descriptor));
-    return ERROR_CALL_NOT_IMPLEMENTED;
+    static const WCHAR szMsi[] = { 'm','s','i',0 };
+    fnMsiProvideComponentFromDescriptor mpcfd;
+    HMODULE hmsi;
+    UINT r = ERROR_CALL_NOT_IMPLEMENTED;
+
+    TRACE("%s %p %p\n", debugstr_w(szDescriptor), szCommandLine, pcchCommandLine);
+
+    hmsi = LoadLibraryW( szMsi );
+    if (!hmsi)
+        return r;
+    mpcfd = (void*) GetProcAddress( hmsi, "MsiProvideComponentFromDescriptorW" );
+    if (mpcfd)
+        r = mpcfd( szDescriptor, szCommandLine, pcchCommandLine, NULL );
+    FreeLibrary( hmsi );
+    return r;
 }



More information about the wine-cvs mailing list