On Tue, Mar 22, 2005 at 12:19:17AM +0100, Stefan Leichter wrote:
Hello,
when played with native msi.dll i found three functions with have a different parameter count between msi.spec of wine and the native dll. Here are the snoop logs of the native dll and wine:
0009:RET msi.MsiDatabaseImportA(00000000,00000000,00000000) retval=00000006 ret=004013fc 0009:RET msi.MsiDatabaseImportW(00000000,00000000,00000000) retval=00000006 ret=004013fc 0009:RET msi.MsiCreateAndVerifyInstallerDirectory(00000000) retval=00000000 ret=004013fc
I have used the msi.dll version 2.6.2600.11833 for testing. The question now is: Can we trust the +snoop logging?
No, snoop is just using heuristics.
MSDN says 3 arguments for MsiDatabaseImport*.
MsiCreateAndVerifyInstallerDirectory is not documented in MSDN, looking for a "retn X" instruction in assembly finds "retn 4".
Ciao, Marcus
Changelog: Correct number of arguments for MsiDatabaseImport*, MsiCreateAndVerifyInstallerDirectory stubs.
Index: dlls/msi/msi.c =================================================================== RCS file: /home/wine/wine/dlls/msi/msi.c,v retrieving revision 1.67 diff -u -r1.67 msi.c --- dlls/msi/msi.c 10 Mar 2005 11:15:40 -0000 1.67 +++ dlls/msi/msi.c 22 Mar 2005 09:46:09 -0000 @@ -701,15 +701,15 @@ return hr; }
-UINT WINAPI MsiDatabaseImportA(LPCSTR szFolderPath, LPCSTR szFilename) +UINT WINAPI MsiDatabaseImportA(MSIHANDLE handle, LPCSTR szFolderPath, LPCSTR szFilename) { - FIXME("%s %s\n",debugstr_a(szFolderPath), debugstr_a(szFilename)); + FIXME("%lx %s %s\n",handle,debugstr_a(szFolderPath), debugstr_a(szFilename)); return ERROR_CALL_NOT_IMPLEMENTED; }
-UINT WINAPI MsiDatabaseImportW(LPCWSTR szFolderPath, LPCWSTR szFilename) +UINT WINAPI MsiDatabaseImportW(MSIHANDLE handle, LPCWSTR szFolderPath, LPCWSTR szFilename) { - FIXME("%s %s\n",debugstr_w(szFolderPath), debugstr_w(szFilename)); + FIXME("%lx %s %s\n",handle,debugstr_w(szFolderPath), debugstr_w(szFilename)); return ERROR_CALL_NOT_IMPLEMENTED; }
@@ -1580,9 +1580,9 @@ return ERROR_CALL_NOT_IMPLEMENTED; }
-UINT WINAPI MsiCreateAndVerifyInstallerDirectory(void) +UINT WINAPI MsiCreateAndVerifyInstallerDirectory(DWORD dwReserved) { - FIXME("\n"); + FIXME("%ld\n", dwReserved); return ERROR_CALL_NOT_IMPLEMENTED; }
Index: dlls/msi/msi.spec =================================================================== RCS file: /home/wine/wine/dlls/msi/msi.spec,v retrieving revision 1.33 diff -u -r1.33 msi.spec --- dlls/msi/msi.spec 16 Feb 2005 16:24:38 -0000 1.33 +++ dlls/msi/msi.spec 22 Mar 2005 09:46:09 -0000 @@ -24,8 +24,8 @@ 24 stdcall MsiDatabaseGenerateTransformW(long long wstr long long) 25 stdcall MsiDatabaseGetPrimaryKeysA(long str ptr) 26 stdcall MsiDatabaseGetPrimaryKeysW(long wstr ptr) -27 stdcall MsiDatabaseImportA(str str) -28 stdcall MsiDatabaseImportW(wstr wstr) +27 stdcall MsiDatabaseImportA(str str long) +28 stdcall MsiDatabaseImportW(wstr wstr long) 29 stub MsiDatabaseMergeA 30 stub MsiDatabaseMergeW 31 stdcall MsiDatabaseOpenViewA(long str ptr) @@ -219,7 +219,7 @@ 219 stub MsiGetFileHashW 220 stub MsiEnumComponentCostsA 221 stub MsiEnumComponentCostsW -222 stdcall MsiCreateAndVerifyInstallerDirectory() +222 stdcall MsiCreateAndVerifyInstallerDirectory(long) 223 stdcall MsiGetFileSignatureInformationA(str long ptr ptr ptr) 224 stdcall MsiGetFileSignatureInformationW(wstr long ptr ptr ptr) 225 stdcall MsiProvideAssemblyA(str str long long str ptr)