mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 22:16:04 +00:00
[APPHELP_APITEST] Fix test failures on Vista, 7, 8.1 x86 and x64 (#8122)
* Disable most apphelp:env and some apphelp:db tests on x64 due to structure differences breaking these tests. * Add new tag lists for Windows 8.1 and Windows 10 in apphelp:apphelp test. * Make a few changes to accept either Windows 10 or Windows 8.1 and older behavior in apphelp:apphelp test. * Create new shimdata structures for Windows 8 and Windows Vista. * Add attribute size definitions for Vista, 8.1, and 10. * Create new shim data validation functions for Vista and 8.1. * Use local time instead of UTC time for shim db version. This fixes test failures when the day in local time and the day in UTC are different.
This commit is contained in:
parent
ae4d4544d9
commit
bf734eb002
4 changed files with 346 additions and 35 deletions
|
@ -213,7 +213,7 @@ static struct
|
|||
DWORD line;
|
||||
DWORD min_ver;
|
||||
DWORD max_ver;
|
||||
const char* tags[7*8];
|
||||
const char* tags[99];
|
||||
} data[] = {
|
||||
{
|
||||
TAG_TYPE_NULL, 0x1000, __LINE__, WINVER_ANY, WINVER_2003,
|
||||
|
@ -229,12 +229,30 @@ static struct
|
|||
}
|
||||
},
|
||||
{
|
||||
TAG_TYPE_NULL, 0x1000, __LINE__, WINVER_WIN7, WINVER_ANY,
|
||||
TAG_TYPE_NULL, 0x1000, __LINE__, WINVER_WIN7, WINVER_WIN7,
|
||||
{
|
||||
"InvalidTag", "INCLUDE", "GENERAL", "MATCH_LOGIC_NOT", "APPLY_ALL_SHIMS", "USE_SERVICE_PACK_FILES", "MITIGATION_OS", "BLOCK_UPGRADE",
|
||||
"INCLUDEEXCLUDEDLL", "RAC_EVENT_OFF", "TELEMETRY_OFF", "SHIM_ENGINE_OFF", "LAYER_PROPAGATION_OFF", "REINSTALL_UPGRADE", NULL
|
||||
}
|
||||
},
|
||||
{
|
||||
TAG_TYPE_NULL, 0x1000, __LINE__, WINVER_WIN8, WINVER_WIN81,
|
||||
{
|
||||
"InvalidTag", "INCLUDE", "GENERAL", "MATCH_LOGIC_NOT", "APPLY_ALL_SHIMS", "USE_SERVICE_PACK_FILES", "MITIGATION_OS", "TRACE_PCA",
|
||||
"INCLUDEEXCLUDEDLL", "RAC_EVENT_OFF", "TELEMETRY_OFF", "SHIM_ENGINE_OFF", "LAYER_PROPAGATION_OFF", "FORCE_CACHE", "MONITORING_OFF",
|
||||
"QUIRK_OFF", "ELEVATED_PROP_OFF", "UPGRADE_ACTION_BLOCK_WEBSETUP", "UPGRADE_ACTION_PROCEED_TO_MEDIASETUP", NULL
|
||||
}
|
||||
},
|
||||
{
|
||||
TAG_TYPE_NULL, 0x1000, __LINE__, WINVER_WIN10, WINVER_ANY,
|
||||
{
|
||||
"InvalidTag", "INCLUDE", "GENERAL", "MATCH_LOGIC_NOT", "APPLY_ALL_SHIMS", "USE_SERVICE_PACK_FILES", "MITIGATION_OS", "TRACE_PCA",
|
||||
"INCLUDEEXCLUDEDLL", "RAC_EVENT_OFF", "TELEMETRY_OFF", "SHIM_ENGINE_OFF", "LAYER_PROPAGATION_OFF", "FORCE_CACHE", "MONITORING_OFF",
|
||||
"QUIRK_OFF", "ELEVATED_PROP_OFF", "UPGRADE_ACTION_BLOCK_WEBSETUP", "UPGRADE_ACTION_PROCEED_TO_MEDIASETUP", "HWCOMPAT_DEVICE",
|
||||
"HWEXCLUDE_DEVICE", "WUCOMPAT_DEVICE", "APPEND_COMMANDLINE", "COMPARE_CASE", "InvalidTag", "InvalidTag", "MATCHED_OBJECT",
|
||||
"USE_INVENTORY", NULL
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
TAG_TYPE_BYTE, 0x1000, __LINE__, WINVER_ANY, WINVER_ANY,
|
||||
|
@ -294,7 +312,7 @@ static struct
|
|||
}
|
||||
},
|
||||
{
|
||||
TAG_TYPE_DWORD, 0x800, __LINE__, WINVER_WIN7, WINVER_ANY,
|
||||
TAG_TYPE_DWORD, 0x800, __LINE__, WINVER_WIN7, WINVER_WIN7,
|
||||
{
|
||||
"InvalidTag", "SIZE", "OFFSET", "CHECKSUM", "SHIM_TAGID", "PATCH_TAGID", "MODULE_TYPE", "VERDATEHI",
|
||||
"VERDATELO", "VERFILEOS", "VERFILETYPE", "PE_CHECKSUM", "PREVOSMAJORVER", "PREVOSMINORVER", "PREVOSPLATFORMID", "PREVOSBUILDNO",
|
||||
|
@ -305,6 +323,39 @@ static struct
|
|||
"CONTEXT_TAGID", "EXE_WRAPPER", "URL_ID", NULL
|
||||
}
|
||||
},
|
||||
{
|
||||
TAG_TYPE_DWORD, 0x800, __LINE__, WINVER_WIN8, WINVER_WIN81,
|
||||
{
|
||||
"InvalidTag", "SIZE", "OFFSET", "CHECKSUM", "SHIM_TAGID", "PATCH_TAGID", "MODULE_TYPE", "VERDATEHI",
|
||||
"VERDATELO", "VERFILEOS", "VERFILETYPE", "PE_CHECKSUM", "PREVOSMAJORVER", "PREVOSMINORVER", "PREVOSPLATFORMID", "PREVOSBUILDNO",
|
||||
"PROBLEMSEVERITY", "LANGID", "VER_LANGUAGE", "InvalidTag", "ENGINE", "HTMLHELPID", "INDEX_FLAGS", "FLAGS",
|
||||
"DATA_VALUETYPE", "DATA_DWORD", "LAYER_TAGID", "MSI_TRANSFORM_TAGID", "LINKER_VERSION", "LINK_DATE", "UPTO_LINK_DATE", "OS_SERVICE_PACK",
|
||||
"FLAG_TAGID", "RUNTIME_PLATFORM", "OS_SKU", "OS_PLATFORM", "APP_NAME_RC_ID", "VENDOR_NAME_RC_ID", "SUMMARY_MSG_RC_ID", "InvalidTag",
|
||||
"DESCRIPTION_RC_ID", "PARAMETER1_RC_ID", "InvalidTag", "InvalidTag", "InvalidTag", "InvalidTag", "InvalidTag", "InvalidTag",
|
||||
"CONTEXT_TAGID", "EXE_WRAPPER", "EXE_TYPE", "FROM_LINK_DATE", "REVISION_EQ", "REVISION_LE", "REVISION_GE", "DATE_EQ", "DATE_LE", "DATE_GE",
|
||||
"CPU_MODEL_EQ", "CPU_MODEL_LE", "CPU_MODEL_GE", "CPU_FAMILY_EQ", "CPU_FAMILY_LE", "CPU_FAMILY_GE", "CREATOR_REVISION_EQ", "CREATOR_REVISION_LE",
|
||||
"CREATOR_REVISION_GE", "SIZE_OF_IMAGE", "SHIM_CLASS", "PACKAGEID_ARCHITECTURE", "REINSTALL_UPGRADE_TYPE", "BLOCK_UPGRADE_TYPE", "ROUTING_MODE",
|
||||
"OS_VERSION_VALUE", "CRC_CHECKSUM", "URL_ID", "QUIRK_TAGID", "InvalidTag", "MIGRATION_DATA_TYPE", "UPGRADE_DATA", "MIGRATION_DATA_TAGID", "REG_VALUE_TYPE",
|
||||
"REG_VALUE_DATA_DWORD", "TEXT_ENCODING", NULL
|
||||
}
|
||||
},
|
||||
{
|
||||
TAG_TYPE_DWORD, 0x800, __LINE__, WINVER_WIN10, WINVER_ANY,
|
||||
{
|
||||
"InvalidTag", "SIZE", "OFFSET", "CHECKSUM", "SHIM_TAGID", "PATCH_TAGID", "MODULE_TYPE", "VERDATEHI",
|
||||
"VERDATELO", "VERFILEOS", "VERFILETYPE", "PE_CHECKSUM", "PREVOSMAJORVER", "PREVOSMINORVER", "PREVOSPLATFORMID", "PREVOSBUILDNO",
|
||||
"PROBLEMSEVERITY", "LANGID", "VER_LANGUAGE", "OS_KIND", "ENGINE", "HTMLHELPID", "INDEX_FLAGS", "FLAGS",
|
||||
"DATA_VALUETYPE", "DATA_DWORD", "LAYER_TAGID", "MSI_TRANSFORM_TAGID", "LINKER_VERSION", "LINK_DATE", "UPTO_LINK_DATE", "InvalidTag",
|
||||
"FLAG_TAGID", "RUNTIME_PLATFORM", "InvalidTag", "GUEST_TARGET_PLATFORM", "APP_NAME_RC_ID", "VENDOR_NAME_RC_ID", "SUMMARY_MSG_RC_ID", "InvalidTag",
|
||||
"DESCRIPTION_RC_ID", "PARAMETER1_RC_ID", "HWCOMPAT_HWID_COUNT", "TITLE_MSG_RC_ID_BACKUP", "SUMMARY_MSG_RC_ID_BACKUP", "InvalidTag", "InvalidTag", "InvalidTag",
|
||||
"CONTEXT_TAGID", "EXE_WRAPPER", "EXE_TYPE", "FROM_LINK_DATE", "REVISION_EQ", "REVISION_LE", "REVISION_GE", "DATE_EQ", "DATE_LE", "DATE_GE",
|
||||
"CPU_MODEL_EQ", "CPU_MODEL_LE", "CPU_MODEL_GE", "CPU_FAMILY_EQ", "CPU_FAMILY_LE", "CPU_FAMILY_GE", "CREATOR_REVISION_EQ", "CREATOR_REVISION_LE",
|
||||
"CREATOR_REVISION_GE", "SIZE_OF_IMAGE", "SHIM_CLASS", "PACKAGEID_ARCHITECTURE", "REINSTALL_UPGRADE_TYPE", "BLOCK_UPGRADE_TYPE", "ROUTING_MODE",
|
||||
"OS_VERSION_VALUE", "CRC_CHECKSUM", "URL_ID", "QUIRK_TAGID", "InvalidTag", "MIGRATION_DATA_TYPE", "UPGRADE_DATA", "MIGRATION_DATA_TAGID", "REG_VALUE_TYPE",
|
||||
"REG_VALUE_DATA_DWORD", "TEXT_ENCODING", "UX_BLOCKTYPE_OVERRIDE", "EDITION", "FW_LINK_ID", "KB_ARTICLE_ID", "InvalidTag", "TITLE_MSG_RC_ID", "LINK_TEXT_RC_ID",
|
||||
"LINK_TEXT_RC_ID_BACKUP", "InvalidTag", "InvalidTag", "InvalidTag", "InvalidTag", "REQUESTED_ATTRIBUTES", "BACKUP_LABEL", NULL
|
||||
}
|
||||
},
|
||||
{
|
||||
TAG_TYPE_DWORD | 0x800, 0x800, __LINE__, WINVER_ANY, WINVER_ANY,
|
||||
{
|
||||
|
@ -328,13 +379,32 @@ static struct
|
|||
}
|
||||
},
|
||||
{
|
||||
TAG_TYPE_QWORD, 0x1000, __LINE__, WINVER_VISTA, WINVER_ANY,
|
||||
TAG_TYPE_QWORD, 0x1000, __LINE__, WINVER_VISTA, WINVER_WIN7,
|
||||
{
|
||||
"InvalidTag", "TIME", "BIN_FILE_VERSION", "BIN_PRODUCT_VERSION", "MODTIME", "FLAG_MASK_KERNEL", "UPTO_BIN_PRODUCT_VERSION", "DATA_QWORD",
|
||||
"FLAG_MASK_USER", "FLAGS_NTVDM1", "FLAGS_NTVDM2", "FLAGS_NTVDM3", "FLAG_MASK_SHELL", "UPTO_BIN_FILE_VERSION", "FLAG_MASK_FUSION", "FLAG_PROCESSPARAM",
|
||||
"FLAG_LUA", "FLAG_INSTALL", NULL
|
||||
}
|
||||
},
|
||||
{
|
||||
TAG_TYPE_QWORD, 0x1000, __LINE__, WINVER_WIN8, WINVER_WIN81,
|
||||
{
|
||||
"InvalidTag", "TIME", "BIN_FILE_VERSION", "BIN_PRODUCT_VERSION", "MODTIME", "FLAG_MASK_KERNEL", "UPTO_BIN_PRODUCT_VERSION", "DATA_QWORD",
|
||||
"FLAG_MASK_USER", "FLAGS_NTVDM1", "FLAGS_NTVDM2", "FLAGS_NTVDM3", "FLAG_MASK_SHELL", "UPTO_BIN_FILE_VERSION", "FLAG_MASK_FUSION", "FLAG_PROCESSPARAM",
|
||||
"FLAG_LUA", "FLAG_INSTALL", "FROM_BIN_PRODUCT_VERSION", "FROM_BIN_FILE_VERSION", "PACKAGEID_VERSION", "FROM_PACKAGEID_VERSION", "UPTO_PACKAGEID_VERSION",
|
||||
"OSMAXVERSIONTESTED", "FROM_OSMAXVERSIONTESTED", "UPTO_OSMAXVERSIONTESTED", "FLAG_MASK_WINRT", "REG_VALUE_DATA_QWORD", "QUIRK_ENABLED_UPTO_VERSION", NULL
|
||||
}
|
||||
},
|
||||
{
|
||||
TAG_TYPE_QWORD, 0x1000, __LINE__, WINVER_WIN10, WINVER_ANY,
|
||||
{
|
||||
"InvalidTag", "TIME", "BIN_FILE_VERSION", "BIN_PRODUCT_VERSION", "MODTIME", "FLAG_MASK_KERNEL", "UPTO_BIN_PRODUCT_VERSION", "DATA_QWORD",
|
||||
"FLAG_MASK_USER", "FLAGS_NTVDM1", "FLAGS_NTVDM2", "FLAGS_NTVDM3", "FLAG_MASK_SHELL", "UPTO_BIN_FILE_VERSION", "FLAG_MASK_FUSION", "FLAG_PROCESSPARAM",
|
||||
"FLAG_LUA", "FLAG_INSTALL", "FROM_BIN_PRODUCT_VERSION", "FROM_BIN_FILE_VERSION", "PACKAGEID_VERSION", "FROM_PACKAGEID_VERSION", "UPTO_PACKAGEID_VERSION",
|
||||
"OSMAXVERSIONTESTED", "FROM_OSMAXVERSIONTESTED", "UPTO_OSMAXVERSIONTESTED", "FLAG_MASK_WINRT", "REG_VALUE_DATA_QWORD", "QUIRK_ENABLED_VERSION_LT",
|
||||
"SOURCE_OS", "SOURCE_OS_LTE", "SOURCE_OS_GTE", "FILESIZE", NULL
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
TAG_TYPE_STRINGREF, 0x1000, __LINE__, WINVER_ANY, WINVER_2003,
|
||||
|
@ -357,7 +427,7 @@ static struct
|
|||
}
|
||||
},
|
||||
{
|
||||
TAG_TYPE_STRINGREF, 0x1000, __LINE__, WINVER_WIN7, WINVER_ANY,
|
||||
TAG_TYPE_STRINGREF, 0x1000, __LINE__, WINVER_WIN7, WINVER_WIN7,
|
||||
{
|
||||
"InvalidTag", "NAME", "DESCRIPTION", "MODULE", "API", "VENDOR", "APP_NAME", "InvalidTag",
|
||||
"COMMAND_LINE", "COMPANY_NAME", "DLLFILE", "WILDCARD_NAME", "InvalidTag", "InvalidTag", "InvalidTag", "InvalidTag",
|
||||
|
@ -366,6 +436,33 @@ static struct
|
|||
"16BIT_MODULE_NAME", "LAYER_DISPLAYNAME", "COMPILER_VERSION", "ACTION_TYPE", "EXPORT_NAME", "URL", NULL
|
||||
}
|
||||
},
|
||||
{
|
||||
TAG_TYPE_STRINGREF, 0x1000, __LINE__, WINVER_WIN8, WINVER_WIN81,
|
||||
{
|
||||
"InvalidTag", "NAME", "DESCRIPTION", "MODULE", "API", "VENDOR", "APP_NAME", "InvalidTag",
|
||||
"COMMAND_LINE", "COMPANY_NAME", "DLLFILE", "WILDCARD_NAME", "InvalidTag", "InvalidTag", "InvalidTag", "InvalidTag",
|
||||
"PRODUCT_NAME", "PRODUCT_VERSION", "FILE_DESCRIPTION", "FILE_VERSION", "ORIGINAL_FILENAME", "INTERNAL_NAME", "LEGAL_COPYRIGHT", "16BIT_DESCRIPTION",
|
||||
"APPHELP_DETAILS", "LINK_URL", "LINK_TEXT", "APPHELP_TITLE", "APPHELP_CONTACT", "SXS_MANIFEST", "DATA_STRING", "MSI_TRANSFORM_FILE",
|
||||
"16BIT_MODULE_NAME", "LAYER_DISPLAYNAME", "COMPILER_VERSION", "ACTION_TYPE", "EXPORT_NAME", "VENDOR_ID", "DEVICE_ID", "SUB_VENDOR_ID",
|
||||
"SUB_SYSTEM_ID", "PACKAGEID_NAME", "PACKAGEID_PUBLISHER", "PACKAGEID_LANGUAGE", "URL", "MANUFACTURER", "MODEL", "DATE", "REG_VALUE_NAME",
|
||||
"REG_VALUE_DATA_SZ", "MIGRATION_DATA_TEXT", NULL
|
||||
}
|
||||
},
|
||||
{
|
||||
TAG_TYPE_STRINGREF, 0x1000, __LINE__, WINVER_WIN10, WINVER_ANY,
|
||||
{
|
||||
"InvalidTag", "NAME", "DESCRIPTION", "MODULE", "API", "VENDOR", "APP_NAME", "InvalidTag",
|
||||
"COMMAND_LINE", "COMPANY_NAME", "DLLFILE", "WILDCARD_NAME", "InvalidTag", "InvalidTag", "InvalidTag", "InvalidTag",
|
||||
"PRODUCT_NAME", "PRODUCT_VERSION", "FILE_DESCRIPTION", "FILE_VERSION", "ORIGINAL_FILENAME", "INTERNAL_NAME", "LEGAL_COPYRIGHT", "16BIT_DESCRIPTION",
|
||||
"APPHELP_DETAILS", "LINK_URL", "LINK_TEXT", "APPHELP_TITLE", "APPHELP_CONTACT", "SXS_MANIFEST", "DATA_STRING", "MSI_TRANSFORM_FILE",
|
||||
"16BIT_MODULE_NAME", "LAYER_DISPLAYNAME", "COMPILER_VERSION", "ACTION_TYPE", "EXPORT_NAME", "VENDOR_ID", "DEVICE_ID", "SUB_VENDOR_ID",
|
||||
"SUB_SYSTEM_ID", "PACKAGEID_NAME", "PACKAGEID_PUBLISHER", "PACKAGEID_LANGUAGE", "URL", "MANUFACTURER", "MODEL", "DATE", "REG_VALUE_NAME",
|
||||
"REG_VALUE_DATA_SZ", "MIGRATION_DATA_TEXT", "APP_STORE_PRODUCT_ID", "MORE_INFO_URL", "DEST_OS_VALUE_DEF", "DEST_OS_GTE", "DEST_OS_LT", "DEST_OS",
|
||||
"PACKAGE_STRONGNAME", "FALLBACK_XML", "LINK_TEXT_OVERRIDE", "MATCH_LOGIC_NOT_IF_SDB_CAPABILITY_EXISTS", "ESCAPE_CHARACTER", "InvalidTag",
|
||||
"InvalidTag", "InvalidTag", "InvalidTag", "PUBLISHER", "MATCHING_LABEL", "UPTO_PRODUCT_VERSION", "UPTO_FILE_VERSION", "FROM_PRODUCT_VERSION",
|
||||
"FROM_FILE_VERSION", "LANGUAGE", NULL
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
TAG_TYPE_LIST, 0x800, __LINE__, WINVER_ANY, WINVER_2003,
|
||||
|
@ -385,7 +482,7 @@ static struct
|
|||
}
|
||||
},
|
||||
{
|
||||
TAG_TYPE_LIST, 0x800, __LINE__, WINVER_WIN7, WINVER_ANY,
|
||||
TAG_TYPE_LIST, 0x800, __LINE__, WINVER_WIN7, WINVER_WIN7,
|
||||
{
|
||||
"InvalidTag", "DATABASE", "LIBRARY", "INEXCLUDE", "SHIM", "PATCH", "APP", "EXE",
|
||||
"MATCHING_FILE", "SHIM_REF", "PATCH_REF", "LAYER", "FILE", "APPHELP", "LINK", "DATA",
|
||||
|
@ -394,6 +491,37 @@ static struct
|
|||
"SPC", NULL
|
||||
}
|
||||
},
|
||||
{
|
||||
TAG_TYPE_LIST, 0x800, __LINE__, WINVER_WIN8, WINVER_WIN81,
|
||||
{
|
||||
"InvalidTag", "DATABASE", "LIBRARY", "INEXCLUDE", "SHIM", "PATCH", "APP", "EXE",
|
||||
"MATCHING_FILE", "SHIM_REF", "PATCH_REF", "LAYER", "FILE", "APPHELP", "LINK", "DATA",
|
||||
"MSI_TRANSFORM", "MSI_TRANSFORM_REF", "MSI_PACKAGE", "FLAG", "MSI_CUSTOM_ACTION", "FLAG_REF", "ACTION", "LOOKUP",
|
||||
"CONTEXT", "CONTEXT_REF", "KDEVICE", "InvalidTag", "KDRIVER", "InvalidTag", "MATCHING_DEVICE", "ACPI",
|
||||
"BIOS", "CPU", "OEM", "KFLAG", "KFLAG_REF", "KSHIM", "KSHIM_REF", "REINSTALL_UPGRADE", "KDATA", "BLOCK_UPGRADE",
|
||||
"SPC", "QUIRK", "QUIRK_REF", "BIOS_BLOCK", "MATCHING_INFO_BLOCK", "DEVICE_BLOCK", "MIGRATION_DATA", "MIGRATION_DATA_REF",
|
||||
"MATCHING_REG", "MATCHING_TEXT", "MACHINE_BLOCK", "OS_UPGRADE", "PACKAGE", NULL
|
||||
}
|
||||
},
|
||||
{
|
||||
TAG_TYPE_LIST, 0x800, __LINE__, WINVER_WIN10, WINVER_ANY,
|
||||
{
|
||||
"InvalidTag", "DATABASE", "LIBRARY", "INEXCLUDE", "SHIM", "PATCH", "APP", "EXE",
|
||||
"MATCHING_FILE", "SHIM_REF", "PATCH_REF", "LAYER", "FILE", "APPHELP", "LINK", "DATA",
|
||||
"MSI_TRANSFORM", "MSI_TRANSFORM_REF", "MSI_PACKAGE", "FLAG", "MSI_CUSTOM_ACTION", "FLAG_REF", "ACTION", "LOOKUP",
|
||||
"CONTEXT", "CONTEXT_REF", "KDEVICE", "InvalidTag", "KDRIVER", "InvalidTag", "MATCHING_DEVICE", "ACPI",
|
||||
"BIOS", "CPU", "OEM", "KFLAG", "KFLAG_REF", "KSHIM", "KSHIM_REF", "REINSTALL_UPGRADE", "KDATA", "BLOCK_UPGRADE",
|
||||
"InvalidTag", "QUIRK", "QUIRK_REF", "BIOS_BLOCK", "MATCHING_INFO_BLOCK", "DEVICE_BLOCK", "MIGRATION_DATA", "MIGRATION_DATA_REF",
|
||||
"MATCHING_REG", "MATCHING_TEXT", "MACHINE_BLOCK", "OS_UPGRADE", "PACKAGE", "PICK_ONE", "MATCH_PLUGIN", "MIGRATION_SHIM",
|
||||
"UPGRADE_DRIVER_BLOCK", "InvalidTag", "MIGRATION_SHIM_REF", "CONTAINS_FILE", "CONTAINS_HWID", "DRIVER_PACKAGE_BLOCK",
|
||||
"DEST_OS_VALUES", "XAP", "HWCOMPAT_SOURCES", "HWCOMPAT_SOURCE_INFO", "C_STRUCT", "PROCESS_MODULE", "C_STRUCT_REF",
|
||||
"MATCHING_WILDCARD_FILE", "MATCHING_WILDCARD_REG", "MATCHING_DIR", "MATCHING_SDB_CAPABILITY", "MATCHING_COMMAND_LINE",
|
||||
"InvalidTag", "InvalidTag", "InvalidTag", "InvalidTag", "InvalidTag", "InvalidTag", "InvalidTag", "InvalidTag",
|
||||
"BACKUP_FILE", "BACKUP_APPLICATION", "BACKUP_PACKAGE", "RESTORE_FILE", "RESTORE_APPLICATION", "RESTORE_PACKAGE",
|
||||
"BACKUP_INCLUDE_FILE", "MATCHING_BACKUP_FILE", "MATCHING_WILDCARD_BACKUP_FILE", "RESTORE_ACTION", "MATCHING_BACKUP_LABEL",
|
||||
"MATCHING_RESTORE_ACTION", "MATCHING_APPLICATION_ATTRIBUTES", NULL
|
||||
}
|
||||
},
|
||||
{
|
||||
TAG_TYPE_LIST | 0x800, 0x800, __LINE__, WINVER_ANY, WINVER_ANY,
|
||||
{
|
||||
|
@ -436,13 +564,29 @@ static struct
|
|||
}
|
||||
},
|
||||
{
|
||||
TAG_TYPE_BINARY, 0x800, __LINE__, WINVER_WIN7, WINVER_ANY,
|
||||
TAG_TYPE_BINARY, 0x800, __LINE__, WINVER_WIN7, WINVER_WIN7,
|
||||
{
|
||||
"InvalidTag", "InvalidTag", "PATCH_BITS", "FILE_BITS", "EXE_ID", "DATA_BITS", "MSI_PACKAGE_ID", "DATABASE_ID",
|
||||
"CONTEXT_PLATFORM_ID", "CONTEXT_BRANCH_ID", "InvalidTag", "InvalidTag", "InvalidTag", "InvalidTag", "InvalidTag", "InvalidTag",
|
||||
"FIX_ID", "APP_ID", NULL
|
||||
}
|
||||
},
|
||||
{
|
||||
TAG_TYPE_BINARY, 0x800, __LINE__, WINVER_WIN8, WINVER_WIN81,
|
||||
{
|
||||
"InvalidTag", "InvalidTag", "PATCH_BITS", "FILE_BITS", "EXE_ID", "DATA_BITS", "MSI_PACKAGE_ID", "DATABASE_ID",
|
||||
"CONTEXT_PLATFORM_ID", "CONTEXT_BRANCH_ID", "InvalidTag", "InvalidTag", "InvalidTag", "InvalidTag", "InvalidTag", "InvalidTag",
|
||||
"FIX_ID", "APP_ID", "REG_VALUE_DATA_BINARY", "TEXT", NULL
|
||||
}
|
||||
},
|
||||
{
|
||||
TAG_TYPE_BINARY, 0x800, __LINE__, WINVER_WIN10, WINVER_ANY,
|
||||
{
|
||||
"InvalidTag", "InvalidTag", "PATCH_BITS", "FILE_BITS", "EXE_ID", "DATA_BITS", "MSI_PACKAGE_ID", "DATABASE_ID",
|
||||
"CONTEXT_PLATFORM_ID", "CONTEXT_BRANCH_ID", "XAP_ID", "C_STRUCT_BIN_DATA", "C_STRUCT_VERSION", "InvalidTag",
|
||||
"InvalidTag", "InvalidTag", "FIX_ID", "APP_ID", "REG_VALUE_DATA_BINARY", "TEXT", "BACKUP_ID", NULL
|
||||
}
|
||||
},
|
||||
{
|
||||
TAG_TYPE_BINARY | 0x800, 0x800, __LINE__, WINVER_ANY, WINVER_ANY,
|
||||
{
|
||||
|
@ -753,8 +897,6 @@ static void test_crc2_imp(DWORD len, int fill, DWORD expected)
|
|||
pSdbFreeFileAttributes(pattrinfo);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void test_ApplicationAttributes(void)
|
||||
{
|
||||
static const WCHAR path[] = {'t','e','s','t','x','x','.','e','x','e',0};
|
||||
|
@ -780,8 +922,8 @@ static void test_ApplicationAttributes(void)
|
|||
DeleteFileA("testxx.exe");
|
||||
ret = pSdbGetFileAttributes(path, &pattrinfo, &num);
|
||||
ok(ret == FALSE, "expected SdbGetFileAttributes to fail.\n");
|
||||
ok(pattrinfo == (PATTRINFO)0xdead, "expected the pointer not to change.\n");
|
||||
ok(num == 333, "expected the number of items not to change.\n");
|
||||
ok(pattrinfo == (PATTRINFO)0xdead || pattrinfo == NULL, "expected the pointer not to change or to be NULL.\n");
|
||||
ok(num == 333 || num == 0, "expected the number of items not to change or to be 0.\n");
|
||||
if (ret)
|
||||
pSdbFreeFileAttributes(pattrinfo);
|
||||
|
||||
|
@ -797,24 +939,36 @@ static void test_ApplicationAttributes(void)
|
|||
// trace("%S\n", pSdbTagToString(pattrinfo[n].type));
|
||||
//}
|
||||
|
||||
switch (num)
|
||||
switch(g_WinVersion)
|
||||
{
|
||||
case 26:
|
||||
// 2k3
|
||||
g_AttrInfoSize = 26;
|
||||
break;
|
||||
case 28:
|
||||
// Win7+ (and maybe vista, but who cares about that?)
|
||||
g_AttrInfoSize = 28;
|
||||
break;
|
||||
default:
|
||||
ok(0, "Unknown attrinfo size: %u\n", num);
|
||||
break;
|
||||
case WINVER_2003:
|
||||
g_AttrInfoSize = 26;
|
||||
break;
|
||||
case WINVER_VISTA:
|
||||
g_AttrInfoSize = 27;
|
||||
break;
|
||||
case WINVER_WIN7:
|
||||
g_AttrInfoSize = 28;
|
||||
break;
|
||||
case WINVER_WIN8:
|
||||
case WINVER_WIN81:
|
||||
g_AttrInfoSize = 43;
|
||||
break;
|
||||
case WINVER_WIN10:
|
||||
g_AttrInfoSize = 38;
|
||||
break;
|
||||
default:
|
||||
ok(0, "Unknown attrinfo size: %u\n", num);
|
||||
break;
|
||||
}
|
||||
|
||||
ok(num == g_AttrInfoSize, "expected %u items, got %d.\n", g_AttrInfoSize, num);
|
||||
|
||||
#ifndef _M_IX86
|
||||
if (num == g_AttrInfoSize && ret && g_WinVersion < WINVER_WIN7)
|
||||
#else
|
||||
if (num == g_AttrInfoSize && ret)
|
||||
#endif
|
||||
{
|
||||
expect_tag_dword(pattrinfo, TAG_SIZE, 0x800);
|
||||
expect_tag_dword(pattrinfo, TAG_CHECKSUM, 0x178bd629);
|
||||
|
@ -860,7 +1014,14 @@ static void test_ApplicationAttributes(void)
|
|||
if (num == g_AttrInfoSize && ret)
|
||||
{
|
||||
expect_tag_dword(pattrinfo, TAG_SIZE, 0x800);
|
||||
#ifndef _M_IX86
|
||||
if (g_WinVersion < WINVER_WIN7)
|
||||
expect_tag_dword(pattrinfo, TAG_CHECKSUM, 0xea7caffd);
|
||||
else
|
||||
expect_tag_dword(pattrinfo, TAG_CHECKSUM, 0xea7cf1fd);
|
||||
#else
|
||||
expect_tag_dword(pattrinfo, TAG_CHECKSUM, 0xea7caffd);
|
||||
#endif
|
||||
//expect_tag_skip_range(pattrinfo, 2, 16);
|
||||
expect_tag_dword(pattrinfo, TAG_MODULE_TYPE, 0x3); /* Win32 */
|
||||
expect_tag_dword(pattrinfo, TAG_PE_CHECKSUM, 0xBAAD);
|
||||
|
@ -1021,7 +1182,10 @@ static void test_SdbGetAppPatchDir(void)
|
|||
_SEH2_TRY
|
||||
{
|
||||
hr = pSdbGetAppPatchDir(NULL, NULL, 0);
|
||||
ok_hex(hr, S_FALSE);
|
||||
if (g_WinVersion < WINVER_WIN10)
|
||||
ok_hex(hr, S_FALSE);
|
||||
else
|
||||
ok_hex(hr, S_OK);
|
||||
}
|
||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
|
@ -1044,7 +1208,7 @@ static void test_SdbGetAppPatchDir(void)
|
|||
|
||||
if (g_WinVersion < WINVER_WIN7)
|
||||
expect_hr = HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER);
|
||||
else if (g_WinVersion < WINVER_WIN10)
|
||||
else if (g_WinVersion <= WINVER_WIN10)
|
||||
expect_hr = S_OK;
|
||||
else
|
||||
expect_hr = TRUE;
|
||||
|
@ -1089,6 +1253,10 @@ START_TEST(apphelp)
|
|||
test_ApplicationAttributes();
|
||||
test_SdbTagToString();
|
||||
test_SdbTagToStringAllTags();
|
||||
#ifndef _M_IX86
|
||||
skip("FIXME: Need new SdbGetAppPatchDir() for non-x86!\n");
|
||||
#else
|
||||
if (pSdbGetAppPatchDir)
|
||||
test_SdbGetAppPatchDir();
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -31,6 +31,7 @@ extern DWORD g_WinVersion;
|
|||
#define WINVER_VISTA 0x0600
|
||||
#define WINVER_WIN7 0x0601
|
||||
#define WINVER_WIN8 0x0602
|
||||
#define WINVER_WIN81 0x0603
|
||||
#define WINVER_WIN10 0x0a00
|
||||
|
||||
|
||||
|
|
|
@ -229,7 +229,7 @@ static void test_GetDatabaseInformationEmpty(PDB pdb)
|
|||
else
|
||||
{
|
||||
SYSTEMTIME si = {0};
|
||||
GetSystemTime(&si);
|
||||
GetLocalTime(&si);
|
||||
DWORD dwExpect = ((DWORD)si.wYear - 2000) * 10000 + si.wMonth * 100 + si.wDay;
|
||||
ok(pInfo->dwMinor == dwExpect, "Expected pInfo->dwMinor to be %d, was: %d\n", dwExpect, pInfo->dwMinor);
|
||||
}
|
||||
|
@ -1774,7 +1774,7 @@ static void test_DataTags(HSDB hsdb)
|
|||
ok_hex(dwBufferSize, sizeof(DWORD));
|
||||
ok_hex(*(DWORD*)Buffer, 3333);
|
||||
|
||||
if (g_WinVersion > _WIN32_WINNT_WS03)
|
||||
if (g_WinVersion >= _WIN32_WINNT_WIN10)
|
||||
{
|
||||
memset(Buffer, 0xaa, sizeof(Buffer));
|
||||
dwBufferSize = sizeof(Buffer);
|
||||
|
@ -1881,7 +1881,7 @@ static void test_DataTags(HSDB hsdb)
|
|||
ok_hex(dwDataType, 0x12345);
|
||||
ok_hex(dwBufferSize, sizeof(Buffer));
|
||||
ok_hex(*(DWORD*)Buffer, (int)0xaaaaaaaa);
|
||||
if (g_WinVersion == _WIN32_WINNT_WS03)
|
||||
if (g_WinVersion < _WIN32_WINNT_WIN10)
|
||||
ok(trData == 0, "Expected 0, got 0x%x\n", trData);
|
||||
else
|
||||
ok(trData == 0x111111, "Expected 0x111111, got 0x%x\n", trData);
|
||||
|
@ -2125,6 +2125,11 @@ START_TEST(db)
|
|||
*(void**)&pSdbGetDatabaseInformation = (void *)GetProcAddress(hdll, "SdbGetDatabaseInformation");
|
||||
*(void**)&pSdbFreeDatabaseInformation = (void *)GetProcAddress(hdll, "SdbFreeDatabaseInformation");
|
||||
|
||||
#ifndef _M_IX86
|
||||
skip("FIXME: We need a new db test for non-x86!\n");
|
||||
return;
|
||||
#endif
|
||||
|
||||
test_Sdb();
|
||||
test_write_ex();
|
||||
test_stringtable();
|
||||
|
|
|
@ -83,7 +83,13 @@ typedef struct ShimData_Win2k3
|
|||
GUID rgGuidDB[SDB_MAX_SDBS];
|
||||
} ShimData_Win2k3;
|
||||
|
||||
|
||||
typedef struct ShimData_WinVista
|
||||
{
|
||||
WCHAR szModule[260];
|
||||
DWORD dwSize;
|
||||
DWORD dwMagic;
|
||||
SDBQUERYRESULT_VISTA Query;
|
||||
} ShimData_WinVista;
|
||||
|
||||
typedef struct ShimData_Win7
|
||||
{
|
||||
|
@ -95,6 +101,24 @@ typedef struct ShimData_Win7
|
|||
DWORD unknown; // 0x14c
|
||||
} ShimData_Win7;
|
||||
|
||||
typedef struct ShimData_Win8
|
||||
{
|
||||
WCHAR szModule[260];
|
||||
DWORD dwSize;
|
||||
DWORD dwMagic;
|
||||
DWORD unk1;
|
||||
SDBQUERYRESULT_VISTA Query;
|
||||
WCHAR szLayer[MAX_LAYER_LENGTH];
|
||||
char padding1[0x200];
|
||||
char padding2[0x404];
|
||||
DWORD unk2;
|
||||
DWORD unk3;
|
||||
WCHAR processname[MAX_PATH];
|
||||
WCHAR szLayerEnv[MAX_LAYER_LENGTH];
|
||||
WCHAR unk4[MAX_LAYER_LENGTH];
|
||||
char padding4[112];
|
||||
} ShimData_Win8;
|
||||
|
||||
typedef struct ShimData_Win10_v1
|
||||
{
|
||||
WCHAR szModule[260];
|
||||
|
@ -149,7 +173,9 @@ typedef struct ShimData_QueryOffset
|
|||
|
||||
|
||||
C_ASSERT(sizeof(ShimData_Win2k3) == 392);
|
||||
C_ASSERT(sizeof(ShimData_WinVista) == 984);
|
||||
C_ASSERT(sizeof(ShimData_Win7) == 1500);
|
||||
C_ASSERT(sizeof(ShimData_Win8) == 4704);
|
||||
C_ASSERT(sizeof(ShimData_Win10_v1) == 4712);
|
||||
C_ASSERT(sizeof(ShimData_Win10_v2) == 3976);
|
||||
|
||||
|
@ -308,6 +334,41 @@ static void Validate_ShimData_Win2k3(PVOID data, size_t count, const char* layer
|
|||
ok(pShimData->dwCustomSDBMap == 1, "Expected pShimData->dwCustomSDBMap to be 1, was %u\n", pShimData->dwCustomSDBMap);
|
||||
}
|
||||
|
||||
static void Validate_ShimData_WinVista(PVOID data, size_t count, const char* layers[])
|
||||
{
|
||||
size_t n;
|
||||
ShimData_WinVista* pShimData = (ShimData_WinVista*)data;
|
||||
WCHAR szShimEng[MAX_PATH];
|
||||
HMODULE hShimEngDll = LoadLibraryA("ShimEng.dll");
|
||||
|
||||
GetModuleFileNameW(hShimEngDll, szShimEng, _countof(szShimEng));
|
||||
|
||||
ok(!lstrcmpW(pShimData->szModule, szShimEng), "Expected pShimData->Module to be %s, was %s\n",
|
||||
wine_dbgstr_w(szShimEng), wine_dbgstr_w(pShimData->szModule));
|
||||
ok(pShimData->dwMagic == SHIMDATA_MAGIC, "Expected pShimData->dwMagic to be 0x%x, was 0x%x\n",
|
||||
SHIMDATA_MAGIC, pShimData->dwMagic);
|
||||
ok(pShimData->dwSize == sizeof(ShimData_WinVista), "Expected pShimData->dwSize to be %u, was %u\n",
|
||||
sizeof(ShimData_WinVista), pShimData->dwSize);
|
||||
if (pShimData->Query.dwLayerCount != min(count, SDB_MAX_LAYERS))
|
||||
{
|
||||
char buf[250] = {0};
|
||||
GetEnvironmentVariableA("__COMPAT_LAYER", buf, _countof(buf));
|
||||
trace("At test: %s\n", buf);
|
||||
}
|
||||
ok(pShimData->Query.dwLayerCount == min(count, SDB_MAX_LAYERS),
|
||||
"Expected LayerCount to be %u, was %u\n", min(count, SDB_MAX_LAYERS), pShimData->Query.dwLayerCount);
|
||||
for (n = 0; n < SDB_MAX_LAYERS; ++n)
|
||||
{
|
||||
if (n < count)
|
||||
{
|
||||
ok(pShimData->Query.atrLayers[n] != 0, "Expected to find a valid layer in index %u / %u\n", n, count);
|
||||
ValidateShim(pShimData->Query.atrLayers[n], layers[n]);
|
||||
}
|
||||
else
|
||||
ok(pShimData->Query.atrLayers[n] == 0, "Expected to find an empty layer in index %u / %u\n", n, count);
|
||||
}
|
||||
}
|
||||
|
||||
static void Validate_ShimData_Win7(PVOID data, WCHAR szApphelp[256], size_t count, const char* layers[])
|
||||
{
|
||||
size_t n;
|
||||
|
@ -340,6 +401,35 @@ static void Validate_ShimData_Win7(PVOID data, WCHAR szApphelp[256], size_t coun
|
|||
ok(pShimData->unknown == 0x14c, "Expected pShimData->unknown to be 0x14c, was 0x%x\n", pShimData->unknown);
|
||||
}
|
||||
|
||||
static void Validate_ShimData_Win8(PVOID data, WCHAR szApphelp[256], size_t count, const char* layers[])
|
||||
{
|
||||
size_t n;
|
||||
ShimData_Win8* pShimData = (ShimData_Win8*)data;
|
||||
|
||||
ok(!lstrcmpiW(pShimData->szModule, szApphelp), "Expected pShimData->Module to be %s, was %s\n",
|
||||
wine_dbgstr_w(szApphelp), wine_dbgstr_w(pShimData->szModule));
|
||||
ok(pShimData->dwSize == sizeof(ShimData_Win8), "Expected pShimData->dwSize to be %u, was %u\n",
|
||||
sizeof(ShimData_Win8), pShimData->dwSize);
|
||||
if (pShimData->Query.dwLayerCount != min(count, SDB_MAX_LAYERS))
|
||||
{
|
||||
char buf[250] = {0};
|
||||
GetEnvironmentVariableA("__COMPAT_LAYER", buf, _countof(buf));
|
||||
trace("At test: %s\n", buf);
|
||||
}
|
||||
ok(pShimData->Query.dwLayerCount == min(count, SDB_MAX_LAYERS),
|
||||
"Expected LayerCount to be %u, was %u\n", min(count, SDB_MAX_LAYERS), pShimData->Query.dwLayerCount);
|
||||
for (n = 0; n < SDB_MAX_LAYERS; ++n)
|
||||
{
|
||||
if (n < count)
|
||||
{
|
||||
ok(pShimData->Query.atrLayers[n] != 0, "Expected to find a valid layer in index %u / %u\n", n, count);
|
||||
ValidateShim(pShimData->Query.atrLayers[n], layers[n]);
|
||||
}
|
||||
else
|
||||
ok(pShimData->Query.atrLayers[n] == 0, "Expected to find an empty layer in index %u / %u\n", n, count);
|
||||
}
|
||||
}
|
||||
|
||||
static void Validate_ShimData_Win10_v2(PVOID data, WCHAR szApphelp[256], size_t count, const char* layers[])
|
||||
{
|
||||
size_t n;
|
||||
|
@ -410,6 +500,19 @@ static void Validate_ShimData_Win10(PVOID data, WCHAR szApphelp[256], size_t cou
|
|||
}
|
||||
}
|
||||
|
||||
static void Validate_EmptyShimData_Win8(PVOID data)
|
||||
{
|
||||
ShimData_Win8* pShimData = (ShimData_Win8*)data;
|
||||
ok(pShimData != NULL, "Expected pShimData\n");
|
||||
if (!pShimData)
|
||||
return;
|
||||
|
||||
ok(!lstrcmpiW(pShimData->szModule, L""), "Expected pShimData->Module to be '', was %s\n", wine_dbgstr_w(pShimData->szModule));
|
||||
ok(!lstrcmpiW(pShimData->szLayer, L""), "Expected pShimData->szLayer to be '', was %s\n", wine_dbgstr_w(pShimData->szLayer));
|
||||
ok(pShimData->dwSize == sizeof(ShimData_Win8), "Expected pShimData->dwSize to be %u, was %u\n", sizeof(ShimData_Win8), pShimData->dwSize);
|
||||
ok(!memcmp(&pShimData->Query, &empty_result, sizeof(empty_result)), "Expected result to be empty\n");
|
||||
}
|
||||
|
||||
static void Validate_EmptyShimData_Win10(PVOID data)
|
||||
{
|
||||
ShimData_Win10_v1* pShimData = (ShimData_Win10_v1*)data;
|
||||
|
@ -471,10 +574,14 @@ static void Test_layers(WCHAR szApphelp[256])
|
|||
ok(info.AppCompatFlags.QuadPart == 0, "Expected AppCompatFlags to be 0, was: %s\n", wine_dbgstr_longlong(info.AppCompatFlags.QuadPart));
|
||||
ok(info.AppCompatFlagsUser.QuadPart == 0, "Expected AppCompatFlagsUser to be 0, was: %s\n", wine_dbgstr_longlong(info.AppCompatFlagsUser.QuadPart));
|
||||
ok(info.AppCompatInfo == NULL, "Expected AppCompatInfo to be NULL, was: %p\n", info.AppCompatInfo);
|
||||
if (g_WinVersion < WINVER_WIN10)
|
||||
if (g_WinVersion < WINVER_WIN8)
|
||||
{
|
||||
ok(info.pShimData == NULL, "Expected pShimData to be NULL, was: %p\n", info.pShimData);
|
||||
}
|
||||
else if (g_WinVersion < WINVER_WIN10)
|
||||
{
|
||||
Validate_EmptyShimData_Win8(info.pShimData);
|
||||
}
|
||||
else
|
||||
{
|
||||
Validate_EmptyShimData_Win10(info.pShimData);
|
||||
|
@ -491,8 +598,12 @@ static void Test_layers(WCHAR szApphelp[256])
|
|||
{
|
||||
if (g_WinVersion < WINVER_VISTA)
|
||||
Validate_ShimData_Win2k3(info.pShimData, n, layers);
|
||||
else if (g_WinVersion < WINVER_WIN10)
|
||||
else if (g_WinVersion == WINVER_VISTA)
|
||||
Validate_ShimData_WinVista(info.pShimData, n, layers);
|
||||
else if (g_WinVersion < WINVER_WIN8)
|
||||
Validate_ShimData_Win7(info.pShimData, szApphelp, n, layers);
|
||||
else if (g_WinVersion < WINVER_WIN10)
|
||||
Validate_ShimData_Win8(info.pShimData, szApphelp, n, layers);
|
||||
else
|
||||
Validate_ShimData_Win10(info.pShimData, szApphelp, n, layers);
|
||||
}
|
||||
|
@ -538,8 +649,12 @@ static void Test_repeatlayer(WCHAR szApphelp[256])
|
|||
/* Win10 only 'loads' one layer */
|
||||
if (g_WinVersion < WINVER_VISTA)
|
||||
Validate_ShimData_Win2k3(info.pShimData, SDB_MAX_LAYERS, layers);
|
||||
else if (g_WinVersion < WINVER_WIN10)
|
||||
else if (g_WinVersion == WINVER_VISTA)
|
||||
Validate_ShimData_WinVista(info.pShimData, SDB_MAX_LAYERS, layers);
|
||||
else if (g_WinVersion < WINVER_WIN8)
|
||||
Validate_ShimData_Win7(info.pShimData, szApphelp, SDB_MAX_LAYERS, layers);
|
||||
else if (g_WinVersion < WINVER_WIN10)
|
||||
Validate_ShimData_Win8(info.pShimData, szApphelp, SDB_MAX_LAYERS, layers);
|
||||
else
|
||||
Validate_ShimData_Win10(info.pShimData, szApphelp, 1, layers);
|
||||
}
|
||||
|
@ -636,7 +751,9 @@ static void Test_Shimdata(SDBQUERYRESULT_VISTA* result, const WCHAR* szLayer)
|
|||
if (pData)
|
||||
{
|
||||
ShimData_Win2k3* pWin2k3;
|
||||
ShimData_WinVista* pWinVista;
|
||||
ShimData_Win7* pWin7;
|
||||
ShimData_Win8* pWin8;
|
||||
ShimData_Win10_v1* pWin10;
|
||||
ShimData_Win10_v2* pWin10_v2;
|
||||
SDBQUERYRESULT_VISTA result2 = { { 0 } };
|
||||
|
@ -653,6 +770,12 @@ static void Test_Shimdata(SDBQUERYRESULT_VISTA* result, const WCHAR* szLayer)
|
|||
//ok(!memcmp(&pWin2k3->Query, result, sizeof(SDBQUERYRESULT_2k3)), "Expected pWin2k3->Query to equal result\n");
|
||||
//ok_wstr(pWin7->szLayer, szLayer);
|
||||
break;
|
||||
case sizeof(ShimData_WinVista):
|
||||
pWinVista = (ShimData_WinVista*)pData;
|
||||
ok_hex(pWinVista->dwMagic, SHIMDATA_MAGIC);
|
||||
ok_int(pWinVista->dwSize, dwSize);
|
||||
ok(!memcmp(&pWinVista->Query, result, sizeof(*result)), "Expected pWinVista->Query to equal result\n");
|
||||
break;
|
||||
case sizeof(ShimData_Win7):
|
||||
pWin7 = (ShimData_Win7*)pData;
|
||||
ok_hex(pWin7->dwMagic, SHIMDATA_MAGIC);
|
||||
|
@ -660,6 +783,14 @@ static void Test_Shimdata(SDBQUERYRESULT_VISTA* result, const WCHAR* szLayer)
|
|||
ok(!memcmp(&pWin7->Query, result, sizeof(*result)), "Expected pWin7->Query to equal result\n");
|
||||
ok_wstr(pWin7->szLayer, szLayer);
|
||||
break;
|
||||
case sizeof(ShimData_Win8):
|
||||
pWin8 = (ShimData_Win8*)pData;
|
||||
ok_hex(pWin8->dwMagic, SHIMDATA_MAGIC);
|
||||
ok_int(pWin8->dwSize, dwSize);
|
||||
ok(!memcmp(&pWin8->Query, result, sizeof(*result)), "Expected pWin8->Query to equal result\n");
|
||||
ok_wstr(pWin8->szLayerEnv, szLayer);
|
||||
ok_wstr(pWin8->szLayer, L"");
|
||||
break;
|
||||
case sizeof(ShimData_Win10_v1):
|
||||
pWin10 = (ShimData_Win10_v1*)pData;
|
||||
ok_hex(pWin10->dwMagic, SHIMDATA_MAGIC);
|
||||
|
@ -733,7 +864,7 @@ static void Test_GetMatchingExe(void)
|
|||
BOOL ret;
|
||||
SDBQUERYRESULT_VISTA result = { { 0 } };
|
||||
WCHAR self[MAX_PATH];
|
||||
DWORD flags = (g_WinVersion < WINVER_VISTA) ? 0 : ((g_WinVersion < WINVER_WIN10) ? 1 : 0x21);
|
||||
DWORD flags = (g_WinVersion <= WINVER_VISTA) ? 0 : ((g_WinVersion < WINVER_WIN10) ? 1 : 0x21);
|
||||
|
||||
GetModuleFileNameW(NULL, self, MAX_PATH);
|
||||
SetEnvironmentVariableA("__COMPAT_LAYER", NULL);
|
||||
|
@ -1277,6 +1408,8 @@ START_TEST(env)
|
|||
case WINVER_WIN7:
|
||||
pApphelpCheckRunAppEx_w7 = (void*)GetProcAddress(hdll, "ApphelpCheckRunAppEx");
|
||||
break;
|
||||
case WINVER_WIN8:
|
||||
case WINVER_WIN81:
|
||||
case WINVER_WIN10:
|
||||
pApphelpCheckRunAppEx_w10 = (void*)GetProcAddress(hdll, "ApphelpCheckRunAppEx");
|
||||
break;
|
||||
|
@ -1296,7 +1429,7 @@ START_TEST(env)
|
|||
QueryOffset.dwSize_7_10 = 2;
|
||||
QueryOffset.dwSize_10_v2 = 3;
|
||||
|
||||
g_ShimDataSize = g_WinVersion < WINVER_WIN10 ? 4096 : 8192;
|
||||
g_ShimDataSize = g_WinVersion < WINVER_WIN8 ? 4096 : 8192;
|
||||
_SEH2_TRY
|
||||
{
|
||||
ShimDataType = pSdbGetAppCompatDataSize(&QueryOffset);
|
||||
|
@ -1314,7 +1447,8 @@ START_TEST(env)
|
|||
return;
|
||||
}
|
||||
|
||||
/* New version of Win10.. */
|
||||
#ifdef _M_IX86
|
||||
/* New version of Win10 */
|
||||
if (g_WinVersion == WINVER_WIN10 && ShimDataType == 3)
|
||||
g_ShimDataSize = 4096;
|
||||
|
||||
|
@ -1333,6 +1467,9 @@ START_TEST(env)
|
|||
}
|
||||
|
||||
Test_ApphelpCheckRunApp(szApphelp);
|
||||
#else
|
||||
skip("FIXME: apphelp:env tests invalid for non-x86 platforms.\n");
|
||||
#endif
|
||||
if (g_LayerDB)
|
||||
pSdbReleaseDatabase(g_LayerDB);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue