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?
Bye Stefan
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)
Am Dienstag, 22. März 2005 10:46 schrieb Marcus Meissner:
No, snoop is just using heuristics.
But it works well !
Please send your patch to wine.patches too.
Thanks Stefan