[WINESYNC]

- Sync comdlg32, crypt32, gdiplus, inetcomm, jscript, msctf, mshtml, msxml3, rsaenh, schannel, shlwapi, urlmon, usp10, wininet winetests.

svn path=/trunk/; revision=46982
This commit is contained in:
Aleksey Bragin
2010-04-21 20:35:09 +00:00
parent e20b4df9ef
commit 577625f6f8
41 changed files with 7905 additions and 1238 deletions
+32 -3
View File
@@ -37,7 +37,13 @@
SetContextAttributes)
#define SECPKG_FUNCTION_TABLE_SIZE_2 FIELD_OFFSET(SECPKG_FUNCTION_TABLE, \
SetCredentialsAttributes)
#define SECPKG_FUNCTION_TABLE_SIZE_3 sizeof(SECPKG_FUNCTION_TABLE)
#define SECPKG_FUNCTION_TABLE_SIZE_3 FIELD_OFFSET(SECPKG_FUNCTION_TABLE, \
ChangeAccountPassword)
#define SECPKG_FUNCTION_TABLE_SIZE_4 FIELD_OFFSET(SECPKG_FUNCTION_TABLE, \
QueryMetaData)
#define SECPKG_FUNCTION_TABLE_SIZE_5 FIELD_OFFSET(SECPKG_FUNCTION_TABLE, \
ValidateTargetInfo)
#define SECPKG_FUNCTION_TABLE_SIZE_6 sizeof(SECPKG_FUNCTION_TABLE)
static NTSTATUS (NTAPI *pSpLsaModeInitialize)(ULONG, PULONG,
PSECPKG_FUNCTION_TABLE*, PULONG);
@@ -121,6 +127,7 @@ static PSECPKG_FUNCTION_TABLE getNextSecPkgTable(PSECPKG_FUNCTION_TABLE pTable,
ULONG Version)
{
size_t size;
PSECPKG_FUNCTION_TABLE pNextTable;
if (Version == SECPKG_INTERFACE_VERSION)
size = SECPKG_FUNCTION_TABLE_SIZE_1;
@@ -128,12 +135,32 @@ static PSECPKG_FUNCTION_TABLE getNextSecPkgTable(PSECPKG_FUNCTION_TABLE pTable,
size = SECPKG_FUNCTION_TABLE_SIZE_2;
else if (Version == SECPKG_INTERFACE_VERSION_3)
size = SECPKG_FUNCTION_TABLE_SIZE_3;
else if (Version == SECPKG_INTERFACE_VERSION_4)
size = SECPKG_FUNCTION_TABLE_SIZE_4;
else if (Version == SECPKG_INTERFACE_VERSION_5)
size = SECPKG_FUNCTION_TABLE_SIZE_5;
else if (Version == SECPKG_INTERFACE_VERSION_6)
size = SECPKG_FUNCTION_TABLE_SIZE_6;
else {
ok(FALSE, "Unknown package version 0x%x\n", Version);
return NULL;
}
return (PSECPKG_FUNCTION_TABLE)((PBYTE)pTable + size);
pNextTable = (PSECPKG_FUNCTION_TABLE)((PBYTE)pTable + size);
/* Win7 function tables appear to be SECPKG_INTERFACE_VERSION_6 format,
but unfortunately SpLsaModeInitialize returns SECPKG_INTERFACE_VERSION_3.
We detect that by comparing the "Initialize" pointer from the old table
to the "FreeCredentialsHandle" pointer of the new table. These functions
have different numbers of arguments, so they can't possibly point to the
same implementation */
if (broken((void *) pTable->Initialize == (void *) pNextTable->FreeCredentialsHandle &&
pNextTable->FreeCredentialsHandle != NULL))
{
win_skip("Invalid function pointers for next package\n");
return NULL;
}
return pNextTable;
}
static void testGetInfo(void)
@@ -181,7 +208,9 @@ static void testGetInfo(void)
PackageInfo.fCapabilities);
ok(PackageInfo.wVersion == 1, "wVersion: %d\n", PackageInfo.wVersion);
ok(PackageInfo.wRPCID == 14, "wRPCID: %d\n", PackageInfo.wRPCID);
ok(PackageInfo.cbMaxToken == 0x4000, "cbMaxToken: 0x%x\n",
ok(PackageInfo.cbMaxToken == 0x4000 ||
PackageInfo.cbMaxToken == 0x6000, /* Win7 */
"cbMaxToken: 0x%x\n",
PackageInfo.cbMaxToken);
}
}