106 DWORD ImportLookupTable;
108 DWORD ForwarderChain;
110 DWORD ImportAddressTable;
116 DWORD HintNameTableRVA;
278 IMAGE_DOS_SIGNATURE, 144, 3, 0, 4, 0, 0xFFFF, 0, 0xB8, 0, 0, 0, 0x40,
279 0, { 0 }, 0, 0, { 0 }, 0x80
283 0x1F0E, 0x0EBA, 0xB400, 0xCD09, 0xB821, 0x4C01, 0x21CD, 0x6854, 0x7369,
284 0x7020, 0x6F72, 0x7267, 0x6D61, 0x6320, 0x6E61, 0x6F6E, 0x2074, 0x6562,
285 0x7220, 0x6E75, 0x6920, 0x206E, 0x4F44, 0x2053, 0x6F6D, 0x6564, 0x0D2E,
286 0x0A0D, 0x0024, 0x0000, 0x0000, 0x0000
423 { 0xE496, 0x9A6E, 0xD95E, 0xA2A1, 0x5D72, 0x9CEF, 0x41E3, 0xD483,
424 0xCB5C, 0x329A, 0x887C, 0xE18E, 0xE664, 0x2E1C, 0x0E61, 0xB361,
425 0x8B88, 0xC8D0, 0x47A5, 0x9260, 0x6CC5, 0xE60F, 0x1F61, 0x1E3E,
426 0xAFEE, 0x925A, 0xA084, 0x6B44, 0x2DC6, 0x8126, 0xEBC9, 0xD812,
427 0xF3E9, 0xA3F3, 0xD0D5, 0x2C7F, 0x4592, 0xA0AF, 0x8B15, 0xD91E,
428 0x693E, 0x7A4F, 0x5567, 0xC466, 0xC410, 0x3D29, 0xB25F, 0xCD6C,
429 0x53EF, 0x0D29, 0x085A, 0xEC39, 0xE3BD, 0x58E0, 0x78F5, 0x0587,
430 0xF8D8, 0x14E4, 0x77CE, 0xCCC9, 0x4DCF, 0x8A18, 0x90E8, 0x1A52
438 {
'l',
'S',
'y',
's',
't',
'e',
'm',
'.',
'R',
'e',
's',
'o',
'u',
'r',
'c',
'e',
's',
'.',
439 'R',
'e',
's',
'o',
'u',
'r',
'c',
'e',
'R',
'e',
'a',
'd',
'e',
'r',
',',
' ',
440 'm',
's',
'c',
'o',
'r',
'l',
'i',
'b',
',',
' ',
'V',
'e',
'r',
's',
'i',
'o',
'n',
'=',
441 '2',
'.',
'0',
'.',
'0',
'.',
'0',
',',
' ',
'C',
'u',
'l',
't',
'u',
'r',
'e',
'=',
442 'n',
'e',
'u',
't',
'r',
'a',
'l',
',',
' ',
'P',
'u',
'b',
'l',
'i',
'c',
'K',
'e',
'y',
'T',
'o',
'k',
'e',
'n',
'=',
443 'b',
'7',
'7',
'a',
'5',
'c',
'5',
'6',
'1',
'9',
'3',
'4',
'e',
'0',
'8',
'9',
444 '#',
'S',
'y',
's',
't',
'e',
'm',
'.',
'R',
'e',
's',
'o',
'u',
'r',
'c',
'e',
's',
'.',
445 'R',
'u',
'n',
't',
'i',
'm',
'e',
'R',
'e',
's',
'o',
'u',
'r',
'c',
'e',
'S',
'e',
't',
446 2,0,0,0,0,0,0,0,0,0,0,0,
'P',
'A',
'D',
'P',
'A',
'D',
'P',180,0,0,0
541 "\0<Module>\0wine.dll\0wine\0wine.resources\0\0",
545 { 0x86EF, 0x5B5A, 0x2C5E, 0x4F6D, 0xC2AB, 0x0A94, 0xD658, 0x31DA },
547 { 0x8000, 0x00A0, 0x0024, 0x0400, 0x0080, 0x9400, 0x0000, 0x0600,
548 0x0002, 0x0000, 0x0024, 0x5200, 0x4153, 0x0031, 0x0004, 0x0100,
549 0x0100, 0x2F00, 0x60E0, 0x4D76, 0x5E5C, 0x430A, 0x6FF3, 0x77D6,
550 0x04CA, 0xF6AD, 0xF54D, 0x0AD2, 0x9FB6, 0x39C2, 0x2E66, 0xD30F,
551 0x916F, 0x1826, 0xFB52, 0x78A0, 0x8262, 0x6902, 0xBD47, 0xAF30,
552 0xBAB1, 0x29DA, 0xAA6D, 0xF189, 0x296A, 0x0F13, 0x4982, 0x531D,
553 0x8283, 0x1343, 0x5A33, 0x5D36, 0xEB3F, 0x0863, 0xA771, 0x0679,
554 0x4DFF, 0xD30A, 0xBEAD, 0x2A9F, 0x12A8, 0x4319, 0x5706, 0x333D,
555 0x0CAC, 0xE80A, 0xFD99, 0xC82D, 0x3D3B, 0xBFFE, 0xF256, 0x25E3,
556 0x1A12, 0xC116, 0x8936, 0xF237, 0x5F26, 0xC68A, 0x1E42, 0xCE41,
595 { { { 0 } }, { 0 } },
606 { { { 0 } }, { 0 } },
617 { { { 0 } }, { 0 } },
630 {
'V',
'S',
'_',
'V',
'E',
'R',
'S',
'I',
'O',
'N',
'_',
'I',
'N',
'F',
'O',0,0 },
653 {
'V',
'a',
'r',
'F',
'i',
'l',
'e',
'I',
'n',
'f',
'o',0,0 }
660 {
'T',
'r',
'a',
'n',
's',
'l',
'a',
't',
'i',
'o',
'n',0,0 },
668 {
'S',
't',
'r',
'i',
'n',
'g',
'F',
'i',
'l',
'e',
'I',
'n',
'f',
'o',0 },
675 {
'0',
'0',
'0',
'0',
'0',
'4',
'b',
'0',0 },
683 {
'F',
'i',
'l',
'e',
'D',
'e',
's',
'c',
'r',
'i',
'p',
't',
'i',
'o',
'n',0,0 },
691 {
'F',
'i',
'l',
'e',
'V',
'e',
'r',
's',
'i',
'o',
'n',0,0 },
692 {
'1',
'.',
'0',
'.',
'0',
'.',
'0',0 },
699 {
'I',
'n',
't',
'e',
'r',
'n',
'a',
'l',
'N',
'a',
'm',
'e',0 },
700 {
'w',
'i',
'n',
'e',
'.',
'd',
'l',
'l',0 },
707 {
'L',
'e',
'g',
'a',
'l',
'C',
'o',
'p',
'y',
'r',
'i',
'g',
'h',
't',0 },
715 {
'O',
'r',
'i',
'g',
'i',
'n',
'a',
'l',
'F',
'i',
'l',
'e',
'n',
'a',
'm',
'e',0 },
716 {
'w',
'i',
'n',
'e',
'.',
'd',
'l',
'l',0,0 },
723 {
'P',
'r',
'o',
'd',
'u',
'c',
't',
'V',
'e',
'r',
's',
'i',
'o',
'n',0 },
724 {
'1',
'.',
'0',
'.',
'0',
'.',
'0',0 },
731 {
'A',
's',
's',
'e',
'm',
'b',
'l',
'y',
' ',
'V',
'e',
'r',
's',
'i',
'o',
'n',0 },
732 {
'1',
'.',
'0',
'.',
'0',
'.',
'0',0 },
757 static const WCHAR szFusion[] = {
'f',
'u',
's',
'i',
'o',
'n',
'.',
'd',
'l',
'l',0};
762 win_skip(
"mscoree.dll not available\n");
767 if (!pLoadLibraryShim)
769 win_skip(
"LoadLibraryShim not available\n");
774 hr = pLoadLibraryShim(szFusion,
NULL,
NULL, &hfusion);
777 win_skip(
"fusion.dll not available\n");
782 pCreateAssemblyCache = (
void *)
GetProcAddress(hfusion,
"CreateAssemblyCache");
785 if (!pCreateAssemblyCache || !pGetCachePath)
787 win_skip(
"fusion.dll not implemented\n");
813#define create_file(name, size) create_file_data(name, name, size)
821 assembly.tableshdr.MaskValid.u.HighPart = 0x101;
822 assembly.tableshdr.MaskValid.u.LowPart = 0x00000005;
823 assembly.tableshdr.MaskSorted.u.HighPart = 0x1600;
824 assembly.tableshdr.MaskSorted.u.LowPart = 0x3301FA00;
826 U2(
assembly.labelres).OffsetToData = 0x80000018;
828 U2(
assembly.label11res).OffsetToData = 0x80000030;
845 static const WCHAR winedll[] = {
'w',
'i',
'n',
'e',
'.',
'd',
'l',
'l',0};
849 hr = pCreateAssemblyCache(&
cache, 0);
850 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
852 hr = IAssemblyCache_InstallAssembly(
cache, 0, winedll,
NULL);
856 win_skip(
"Tests can't be run on older .NET version (.NET 1.1)\n");
858 skip(
"Not enough rights to install an assembly\n");
860 ok(0,
"Expected S_OK, got %08x\n",
hr);
863 IAssemblyCache_UninstallAssembly(
cache, 0, winedll,
NULL, &disp);
864 IAssemblyCache_Release(
cache);
874 hr = pCreateAssemblyCache(
NULL, 0);
878 hr = pCreateAssemblyCache(&
cache, 42);
879 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
881 IAssemblyCache_Release(
cache);
890 static const WCHAR wine[] = {
'w',
'i',
'n',
'e',0};
892 hr = pCreateAssemblyCache(&
cache, 0);
893 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
899 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
900 IAssemblyCacheItem_Release(
item);
903 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
904 IAssemblyCacheItem_Release(
item);
906 hr = IAssemblyCache_CreateAssemblyCacheItem(
cache, 1, (
void *)0xdeadbeef, &
item,
NULL);
907 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
908 IAssemblyCacheItem_Release(
item);
911 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
912 IAssemblyCacheItem_Release(
item);
914 hr = IAssemblyCache_CreateAssemblyCacheItem(
cache, 0, (
void *)0xdeadbeef, &
item,
NULL);
915 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
916 IAssemblyCacheItem_Release(
item);
918 IAssemblyCache_Release(
cache);
930 static const WCHAR noext[] = {
'f',
'i',
'l',
'e',0};
931 static const WCHAR badext[] = {
'f',
'i',
'l',
'e',
'.',
'b',
'a',
'd',0};
932 static const WCHAR dllext[] = {
'f',
'i',
'l',
'e',
'.',
'd',
'l',
'l',0};
933 static const WCHAR exeext[] = {
'f',
'i',
'l',
'e',
'.',
'e',
'x',
'e',0};
934 static const WCHAR testdll[] = {
't',
'e',
's',
't',
'.',
'd',
'l',
'l',0};
935 static const WCHAR winedll[] = {
'w',
'i',
'n',
'e',
'.',
'd',
'l',
'l',0};
936 static const WCHAR wine[] = {
'w',
'i',
'n',
'e',0};
941 hr = pCreateAssemblyCache(&
cache, 0);
942 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
953 hr = IAssemblyCache_InstallAssembly(
cache, 0, noext,
NULL);
955 "Expected HRESULT_FROM_WIN32(ERROR_INVALID_NAME), got %08x\n",
hr);
958 hr = IAssemblyCache_InstallAssembly(
cache, 0, badext,
NULL);
960 "Expected HRESULT_FROM_WIN32(ERROR_INVALID_NAME), got %08x\n",
hr);
963 hr = IAssemblyCache_InstallAssembly(
cache, 0, dllext,
NULL);
965 "Expected HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), got %08x\n",
hr);
968 hr = IAssemblyCache_InstallAssembly(
cache, 0, exeext,
NULL);
970 "Expected HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), got %08x\n",
hr);
973 hr = IAssemblyCache_InstallAssembly(
cache, 0, testdll,
NULL);
975 "Expected COR_E_ASSEMBLYEXPECTED, got %08x\n",
hr);
978 hr = IAssemblyCache_InstallAssembly(
cache, 0, winedll,
NULL);
979 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
982 strcat(
dllpath,
"\\assembly\\GAC_MSIL\\wine\\\\1.0.0.0__2d03617b1c31e2f5\\wine.dll");
990 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
991 ok(disp == IASSEMBLYCACHE_UNINSTALL_DISPOSITION_UNINSTALLED,
992 "Expected IASSEMBLYCACHE_UNINSTALL_DISPOSITION_UNINSTALLED, got %d\n", disp);
1000 ok(disp == IASSEMBLYCACHE_UNINSTALL_DISPOSITION_ALREADY_UNINSTALLED,
1001 "Expected IASSEMBLYCACHE_UNINSTALL_DISPOSITION_ALREADY_UNINSTALLED, got %d\n", disp);
1005 IAssemblyCache_Release(
cache);
1008#define INIT_ASM_INFO() \
1009 ZeroMemory(&info, sizeof(ASSEMBLY_INFO)); \
1010 info.cbAssemblyInfo = sizeof(ASSEMBLY_INFO); \
1011 info.pszCurrentAssemblyPathBuf = path; \
1012 info.cchBuf = MAX_PATH; \
1027 static const WCHAR commasep[] = {
',',
' ',0};
1028 static const WCHAR winedll[] = {
'w',
'i',
'n',
'e',
'.',
'd',
'l',
'l',0};
1029 static const WCHAR wine[] = {
'w',
'i',
'n',
'e',0};
1030 static const WCHAR ver[] = {
1031 'V',
'e',
'r',
's',
'i',
'o',
'n',
'=',
'1',
'.',
'0',
'.',
'0',
'.',
'0',0};
1032 static const WCHAR otherver[] = {
1033 'V',
'e',
'r',
's',
'i',
'o',
'n',
'=',
'1',
'.',
'0',
'.',
'0',
'.',
'0',
'0',
'0',
'0',
'0',0};
1034 static const WCHAR badver[] = {
1035 'V',
'e',
'r',
's',
'i',
'o',
'n',
'=',
'1',
'.',
'0',
'.',
'0',
'.',
'1',0};
1037 'C',
'u',
'l',
't',
'u',
'r',
'e',
'=',
'n',
'e',
'u',
't',
'r',
'a',
'l',0};
1038 static const WCHAR badculture[] = {
1039 'C',
'u',
'l',
't',
'u',
'r',
'e',
'=',
'e',
'n',0};
1041 'P',
'u',
'b',
'l',
'i',
'c',
'K',
'e',
'y',
'T',
'o',
'k',
'e',
'n',
'=',
1042 '2',
'd',
'0',
'3',
'6',
'1',
'7',
'b',
'1',
'c',
'3',
'1',
'e',
'2',
'f',
'5',0};
1043 static const WCHAR badpubkey[] = {
1044 'P',
'u',
'b',
'l',
'i',
'c',
'K',
'e',
'y',
'T',
'o',
'k',
'e',
'n',
'=',
1045 'a',
'a',
'a',
'a',
'a',
'a',
'a',
'a',
'a',
'a',
'a',
'a',
'a',
'a',
'a',
'a',0};
1046 static const WCHAR badprop[] = {
'B',
'a',
'd',
'P',
'r',
'o',
'p',
'=',
'b',
'u',
'h',0};
1047 static const WCHAR msil[] = {
1048 '_',
'M',
'S',
'I',
'L',
'\\',
'w',
'i',
'n',
'e',
'\\',
1049 '1',
'.',
'0',
'.',
'0',
'.',
'0',
'_',
'_',
'2',
'd',
'0',
'3',
'6',
'1',
'7',
'b',
1050 '1',
'c',
'3',
'1',
'e',
'2',
'f',
'5',
'\\',0};
1051 static const WCHAR wine2[] = {
1052 'w',
'i',
'n',
'e',
',',
'v',
'e',
'r',
's',
'i',
'o',
'n',
'=',
'1',
'.',
'0',
'.',
'0',
'.',
'1',
',',
1053 'p',
'u',
'b',
'l',
'i',
'c',
'K',
'e',
'y',
'T',
'o',
'k',
'e',
'n',
'=',
1054 '2',
'd',
'0',
'3',
'6',
'1',
'7',
'b',
'1',
'c',
'3',
'1',
'e',
'2',
'f',
'5',
',',
1055 'c',
'u',
'l',
't',
'u',
'r',
'e',
'=',
'n',
'e',
'u',
't',
'r',
'a',
'l',0};
1056 static const WCHAR nullpublickey[] = {
1057 'm',
's',
'c',
'o',
'r',
'l',
'i',
'b',
'.',
'd',
'l',
'l',
',',
'v',
'e',
'r',
's',
'i',
'o',
'n',
'=',
'0',
'.',
'0',
'.',
1058 '0',
'.',
'0',
',',
'c',
'u',
'l',
't',
'u',
'r',
'e',
'=',
'n',
'e',
'u',
't',
'r',
'a',
'l',
',',
1059 'p',
'u',
'b',
'l',
'i',
'c',
'K',
'e',
'y',
'T',
'o',
'k',
'e',
'n',
'=',
'n',
'u',
'l',
'l',0};
1060 static const WCHAR nullpublickey1[] = {
1061 'm',
's',
'c',
'o',
'r',
'l',
'i',
'b',
'.',
'd',
'l',
'l',
',',
1062 'p',
'u',
'b',
'l',
'i',
'c',
'K',
'e',
'y',
'T',
'o',
'k',
'e',
'n',
'=',
'n',
'u',
'L',
'l',0};
1066 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
1073 hr = pCreateAssemblyCache(&
cache, 0);
1074 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
1080 "Expected HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), got %08x\n",
hr);
1082 "Expected sizeof(ASSEMBLY_INFO), got %d\n",
info.cbAssemblyInfo);
1083 ok(
info.dwAssemblyFlags == 0,
"Expected 0, got %08x\n",
info.dwAssemblyFlags);
1084 ok(
info.uliAssemblySizeInKB.u.HighPart == 0,
1085 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.HighPart);
1086 ok(
info.uliAssemblySizeInKB.u.LowPart == 0,
1087 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.LowPart);
1089 "Assembly path was changed\n");
1092 hr = IAssemblyCache_InstallAssembly(
cache, 0, winedll,
NULL);
1093 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
1097 hr = IAssemblyCache_QueryAssemblyInfo(
cache, QUERYASMINFO_FLAG_VALIDATE,
1101 "Expected sizeof(ASSEMBLY_INFO), got %d\n",
info.cbAssemblyInfo);
1102 ok(
info.dwAssemblyFlags == 0,
"Expected 0, got %08x\n",
info.dwAssemblyFlags);
1103 ok(
info.uliAssemblySizeInKB.u.HighPart == 0,
1104 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.HighPart);
1105 ok(
info.uliAssemblySizeInKB.u.LowPart == 0,
1106 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.LowPart);
1108 "Assembly path was changed\n");
1113 hr = IAssemblyCache_QueryAssemblyInfo(
cache, QUERYASMINFO_FLAG_VALIDATE,
1117 "Expected sizeof(ASSEMBLY_INFO), got %d\n",
info.cbAssemblyInfo);
1118 ok(
info.dwAssemblyFlags == 0,
"Expected 0, got %08x\n",
info.dwAssemblyFlags);
1119 ok(
info.uliAssemblySizeInKB.u.HighPart == 0,
1120 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.HighPart);
1121 ok(
info.uliAssemblySizeInKB.u.LowPart == 0,
1122 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.LowPart);
1124 "Assembly path was changed\n");
1130 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
1132 "Expected sizeof(ASSEMBLY_INFO), got %d\n",
info.cbAssemblyInfo);
1134 "Expected ASSEMBLYINFO_FLAG_INSTALLED, got %08x\n",
info.dwAssemblyFlags);
1135 ok(
info.uliAssemblySizeInKB.u.HighPart == 0,
1136 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.HighPart);
1137 ok(
info.uliAssemblySizeInKB.u.LowPart == 0,
1138 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.LowPart);
1140 "Wrong assembly path returned\n");
1142 "Expected %d, got %d\n",
lstrlenW(asmpath) + 1,
info.cchBuf);
1146 hr = IAssemblyCache_QueryAssemblyInfo(
cache, 0, winedll, &
info);
1148 "Expected HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), got %08x\n",
hr);
1150 "Expected sizeof(ASSEMBLY_INFO), got %d\n",
info.cbAssemblyInfo);
1151 ok(
info.dwAssemblyFlags == 0,
"Expected 0, got %08x\n",
info.dwAssemblyFlags);
1152 ok(
info.uliAssemblySizeInKB.u.HighPart == 0,
1153 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.HighPart);
1154 ok(
info.uliAssemblySizeInKB.u.LowPart == 0,
1155 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.LowPart);
1157 "Assembly path was changed\n");
1161 hr = IAssemblyCache_QueryAssemblyInfo(
cache, QUERYASMINFO_FLAG_VALIDATE,
1163 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
1166 hr = IAssemblyCache_QueryAssemblyInfo(
cache, QUERYASMINFO_FLAG_GETSIZE,
1168 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
1172 info.cbAssemblyInfo = 0;
1173 hr = IAssemblyCache_QueryAssemblyInfo(
cache, QUERYASMINFO_FLAG_VALIDATE,
1175 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
1177 "Expected sizeof(ASSEMBLY_INFO), got %d\n",
info.cbAssemblyInfo);
1179 "Expected ASSEMBLYINFO_FLAG_INSTALLED, got %08x\n",
info.dwAssemblyFlags);
1180 ok(
info.uliAssemblySizeInKB.u.HighPart == 0,
1181 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.HighPart);
1182 ok(
info.uliAssemblySizeInKB.u.LowPart == 0,
1183 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.LowPart);
1185 "Wrong assembly path returned\n");
1187 "Expected %d, got %d\n",
lstrlenW(asmpath) + 1,
info.cchBuf);
1191 info.cbAssemblyInfo = 1;
1192 hr = IAssemblyCache_QueryAssemblyInfo(
cache, QUERYASMINFO_FLAG_VALIDATE,
1195 ok(
info.cbAssemblyInfo == 1,
"Expected 1, got %d\n",
info.cbAssemblyInfo);
1196 ok(
info.dwAssemblyFlags == 0,
"Expected 0, got %08x\n",
info.dwAssemblyFlags);
1197 ok(
info.uliAssemblySizeInKB.u.HighPart == 0,
1198 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.HighPart);
1199 ok(
info.uliAssemblySizeInKB.u.LowPart == 0,
1200 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.LowPart);
1202 "Assembly path was changed\n");
1208 hr = IAssemblyCache_QueryAssemblyInfo(
cache, QUERYASMINFO_FLAG_GETSIZE,
1212 "Expected sizeof(ASSEMBLY_INFO) * 2, got %d\n",
info.cbAssemblyInfo);
1213 ok(
info.dwAssemblyFlags == 0,
"Expected 0, got %08x\n",
info.dwAssemblyFlags);
1214 ok(
info.uliAssemblySizeInKB.u.HighPart == 0,
1215 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.HighPart);
1216 ok(
info.uliAssemblySizeInKB.u.LowPart == 0,
1217 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.LowPart);
1219 "Assembly path was changed\n");
1224 hr = IAssemblyCache_QueryAssemblyInfo(
cache, QUERYASMINFO_FLAG_GETSIZE,
1226 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
1228 "Expected sizeof(ASSEMBLY_INFO), got %d\n",
info.cbAssemblyInfo);
1230 "Expected ASSEMBLYINFO_FLAG_INSTALLED, got %08x\n",
info.dwAssemblyFlags);
1231 ok(
info.uliAssemblySizeInKB.u.HighPart == 0,
1232 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.HighPart);
1235 ok((
info.uliAssemblySizeInKB.u.LowPart == 4),
1236 "Expected 4, got %d\n",
info.uliAssemblySizeInKB.u.LowPart);
1239 "Wrong assembly path returned\n");
1241 "Expected %d, got %d\n",
lstrlenW(asmpath) + 1,
info.cchBuf);
1245 hr = IAssemblyCache_QueryAssemblyInfo(
cache, QUERYASMINFO_FLAG_GETSIZE |
1246 QUERYASMINFO_FLAG_VALIDATE,
wine, &
info);
1247 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
1249 "Expected sizeof(ASSEMBLY_INFO), got %d\n",
info.cbAssemblyInfo);
1251 "Expected ASSEMBLYINFO_FLAG_INSTALLED, got %08x\n",
info.dwAssemblyFlags);
1252 ok(
info.uliAssemblySizeInKB.u.HighPart == 0,
1253 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.HighPart);
1256 ok((
info.uliAssemblySizeInKB.u.LowPart == 4),
1257 "Expected 4, got %d\n",
info.uliAssemblySizeInKB.u.LowPart);
1260 "Wrong assembly path returned\n");
1262 "Expected %d, got %d\n",
lstrlenW(asmpath) + 1,
info.cchBuf);
1266 info.pszCurrentAssemblyPathBuf =
NULL;
1267 hr = IAssemblyCache_QueryAssemblyInfo(
cache, QUERYASMINFO_FLAG_GETSIZE,
1270 "Expected sizeof(ASSEMBLY_INFO), got %d\n",
info.cbAssemblyInfo);
1272 "Expected ASSEMBLYINFO_FLAG_INSTALLED, got %08x\n",
info.dwAssemblyFlags);
1273 ok(
info.uliAssemblySizeInKB.u.HighPart == 0,
1274 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.HighPart);
1278 ok((
info.uliAssemblySizeInKB.u.LowPart == 4),
1279 "Expected 4, got %d\n",
info.uliAssemblySizeInKB.u.LowPart);
1282 "Expected %d, got %d\n",
lstrlenW(asmpath) + 1,
info.cchBuf);
1287 hr = IAssemblyCache_QueryAssemblyInfo(
cache, QUERYASMINFO_FLAG_GETSIZE,
1290 "Expected sizeof(ASSEMBLY_INFO), got %d\n",
info.cbAssemblyInfo);
1292 "Expected ASSEMBLYINFO_FLAG_INSTALLED, got %08x\n",
info.dwAssemblyFlags);
1293 ok(
info.uliAssemblySizeInKB.u.HighPart == 0,
1294 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.HighPart);
1296 "Assembly path was changed\n");
1300 ok((
info.uliAssemblySizeInKB.u.LowPart == 4),
1301 "Expected 4, got %d\n",
info.uliAssemblySizeInKB.u.LowPart);
1304 "Expected %d, got %d\n",
lstrlenW(asmpath) + 1,
info.cchBuf);
1309 hr = IAssemblyCache_QueryAssemblyInfo(
cache, QUERYASMINFO_FLAG_GETSIZE,
1311 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
1313 "Expected sizeof(ASSEMBLY_INFO), got %d\n",
info.cbAssemblyInfo);
1315 "Expected ASSEMBLYINFO_FLAG_INSTALLED, got %08x\n",
info.dwAssemblyFlags);
1316 ok(
info.uliAssemblySizeInKB.u.HighPart == 0,
1317 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.HighPart);
1319 "Expected %d, got %d\n",
lstrlenW(asmpath) + 1,
info.cchBuf);
1322 ok((
info.uliAssemblySizeInKB.u.LowPart == 4),
1323 "Expected 4, got %d\n",
info.uliAssemblySizeInKB.u.LowPart);
1326 "Wrong assembly path returned\n");
1333 hr = IAssemblyCache_QueryAssemblyInfo(
cache, QUERYASMINFO_FLAG_GETSIZE,
1335 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
1337 "Expected sizeof(ASSEMBLY_INFO), got %d\n",
info.cbAssemblyInfo);
1339 "Expected ASSEMBLYINFO_FLAG_INSTALLED, got %08x\n",
info.dwAssemblyFlags);
1340 ok(
info.uliAssemblySizeInKB.u.HighPart == 0,
1341 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.HighPart);
1344 ok((
info.uliAssemblySizeInKB.u.LowPart == 4),
1345 "Expected 4, got %d\n",
info.uliAssemblySizeInKB.u.LowPart);
1348 "Wrong assembly path returned\n");
1350 "Expected %d, got %d\n",
lstrlenW(asmpath) + 1,
info.cchBuf);
1357 hr = IAssemblyCache_QueryAssemblyInfo(
cache, QUERYASMINFO_FLAG_VALIDATE,
1367 hr = IAssemblyCache_QueryAssemblyInfo(
cache, QUERYASMINFO_FLAG_GETSIZE,
1374 hr = IAssemblyCache_QueryAssemblyInfo(
cache, QUERYASMINFO_FLAG_GETSIZE,
1376 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
1378 "Expected sizeof(ASSEMBLY_INFO), got %d\n",
info.cbAssemblyInfo);
1380 "Expected ASSEMBLYINFO_FLAG_INSTALLED, got %08x\n",
info.dwAssemblyFlags);
1381 ok(
info.uliAssemblySizeInKB.u.HighPart == 0,
1382 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.HighPart);
1385 ok((
info.uliAssemblySizeInKB.u.LowPart == 4),
1386 "Expected 4, got %d\n",
info.uliAssemblySizeInKB.u.LowPart);
1389 "Wrong assembly path returned\n");
1391 "Expected %d, got %d\n",
lstrlenW(asmpath) + 1,
info.cchBuf);
1398 hr = IAssemblyCache_QueryAssemblyInfo(
cache, QUERYASMINFO_FLAG_GETSIZE,
1401 "Expected HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), got %08x\n",
hr);
1403 "Expected sizeof(ASSEMBLY_INFO), got %d\n",
info.cbAssemblyInfo);
1404 ok(
info.dwAssemblyFlags == 0,
"Expected 0, got %08x\n",
info.dwAssemblyFlags);
1405 ok(
info.uliAssemblySizeInKB.u.HighPart == 0,
1406 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.HighPart);
1407 ok(
info.uliAssemblySizeInKB.u.LowPart == 0,
1408 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.LowPart);
1410 "Assembly path was changed\n");
1416 hr = IAssemblyCache_QueryAssemblyInfo(
cache, QUERYASMINFO_FLAG_GETSIZE,
1419 "Expected HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), got %08x\n",
hr);
1421 "Expected sizeof(ASSEMBLY_INFO), got %d\n",
info.cbAssemblyInfo);
1422 ok(
info.dwAssemblyFlags == 0,
"Expected 0, got %08x\n",
info.dwAssemblyFlags);
1423 ok(
info.uliAssemblySizeInKB.u.HighPart == 0,
1424 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.HighPart);
1425 ok(
info.uliAssemblySizeInKB.u.LowPart == 0,
1426 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.LowPart);
1428 "Assembly path was changed\n");
1448 hr = IAssemblyCache_QueryAssemblyInfo(
cache, QUERYASMINFO_FLAG_GETSIZE,
1450 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
1452 "Expected sizeof(ASSEMBLY_INFO), got %d\n",
info.cbAssemblyInfo);
1454 "Expected ASSEMBLYINFO_FLAG_INSTALLED, got %08x\n",
info.dwAssemblyFlags);
1455 ok(
info.uliAssemblySizeInKB.u.HighPart == 0,
1456 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.HighPart);
1459 ok((
info.uliAssemblySizeInKB.u.LowPart == 4),
1460 "Expected 4, got %d\n",
info.uliAssemblySizeInKB.u.LowPart);
1463 "Wrong assembly path returned\n");
1465 "Expected %d, got %d\n",
lstrlenW(asmpath) + 1,
info.cchBuf);
1472 hr = IAssemblyCache_QueryAssemblyInfo(
cache, QUERYASMINFO_FLAG_GETSIZE,
1475 "Expected HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), got %08x\n",
hr);
1476 ok(
info.dwAssemblyFlags == 0,
"Expected 0, got %08x\n",
info.dwAssemblyFlags);
1478 "Expected sizeof(ASSEMBLY_INFO), got %d\n",
info.cbAssemblyInfo);
1479 ok(
info.uliAssemblySizeInKB.u.HighPart == 0,
1480 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.HighPart);
1481 ok(
info.uliAssemblySizeInKB.u.LowPart == 0,
1482 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.LowPart);
1484 "Assembly path was changed\n");
1492 hr = IAssemblyCache_QueryAssemblyInfo(
cache, QUERYASMINFO_FLAG_GETSIZE,
1494 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
1496 "Expected sizeof(ASSEMBLY_INFO), got %d\n",
info.cbAssemblyInfo);
1498 "Expected ASSEMBLYINFO_FLAG_INSTALLED, got %08x\n",
info.dwAssemblyFlags);
1499 ok(
info.uliAssemblySizeInKB.u.HighPart == 0,
1500 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.HighPart);
1503 ok((
info.uliAssemblySizeInKB.u.LowPart == 4),
1504 "Expected 4, got %d\n",
info.uliAssemblySizeInKB.u.LowPart);
1507 "Wrong assembly path returned\n");
1509 "Expected %d, got %d\n",
lstrlenW(asmpath) + 1,
info.cchBuf);
1516 hr = IAssemblyCache_QueryAssemblyInfo(
cache, QUERYASMINFO_FLAG_GETSIZE,
1519 "Expected HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), got %08x\n",
hr);
1521 "Expected sizeof(ASSEMBLY_INFO), got %d\n",
info.cbAssemblyInfo);
1522 ok(
info.dwAssemblyFlags == 0,
"Expected 0, got %08x\n",
info.dwAssemblyFlags);
1523 ok(
info.uliAssemblySizeInKB.u.HighPart == 0,
1524 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.HighPart);
1525 ok(
info.uliAssemblySizeInKB.u.LowPart == 0,
1526 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.LowPart);
1528 "Assembly path was changed\n");
1536 hr = IAssemblyCache_QueryAssemblyInfo(
cache, QUERYASMINFO_FLAG_GETSIZE,
1538 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
1540 "Expected sizeof(ASSEMBLY_INFO), got %d\n",
info.cbAssemblyInfo);
1542 "Expected ASSEMBLYINFO_FLAG_INSTALLED, got %08x\n",
info.dwAssemblyFlags);
1543 ok(
info.uliAssemblySizeInKB.u.HighPart == 0,
1544 "Expected 0, got %d\n",
info.uliAssemblySizeInKB.u.HighPart);
1547 ok((
info.uliAssemblySizeInKB.u.LowPart == 4),
1548 "Expected 4, got %d\n",
info.uliAssemblySizeInKB.u.LowPart);
1551 "Wrong assembly path returned\n");
1553 "Expected %d, got %d\n",
lstrlenW(asmpath) + 1,
info.cchBuf);
1557 info.pszCurrentAssemblyPathBuf =
NULL;
1565 "Expected sizeof(ASSEMBLY_INFO), got %d\n",
info.cbAssemblyInfo);
1567 "Expected ASSEMBLYINFO_FLAG_INSTALLED, got %08x\n",
info.dwAssemblyFlags);
1572 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
1573 ok(disp == IASSEMBLYCACHE_UNINSTALL_DISPOSITION_UNINSTALLED,
1574 "Expected IASSEMBLYCACHE_UNINSTALL_DISPOSITION_UNINSTALLED, got %d\n", disp);
1578 IAssemblyCache_Release(
cache);
char * strcat(char *DstString, const char *SrcString)
ACPI_SIZE strlen(const char *String)
#define FUSION_E_PRIVATE_ASM_DISALLOWED
#define COR_E_ASSEMBLYEXPECTED
#define CLDB_E_FILE_OLDVER
static const WCHAR szDllName[]
static const WCHAR empty[]
#define GetProcAddress(x, y)
#define INVALID_HANDLE_VALUE
#define CreateFileA(a, b, c, d, e, f, g)
#define ERROR_INVALID_NAME
static const WCHAR pubkey[]
static const WCHAR culture[]
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
BOOL WINAPI SetEndOfFile(HANDLE hFile)
DWORD WINAPI GetFileAttributesA(LPCSTR lpFileName)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
UINT WINAPI GetWindowsDirectoryA(OUT LPSTR lpBuffer, IN UINT uSize)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
static const WCHAR Signature[]
#define ASSEMBLYINFO_FLAG_INSTALLED
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
#define ERROR_FILE_NOT_FOUND
static LPCSTR DWORD void * pvReserved
static BOOL init_functionpointers(void)
static void test_QueryAssemblyInfo(void)
static LPWSTR pwzCachePath
static void test_CreateAssemblyCache(void)
static void create_file_data(LPCSTR name, LPCSTR data, DWORD size)
static void test_CreateAssemblyCacheItem(void)
static void create_assembly(LPCSTR file)
#define create_file(name, size)
static BOOL check_dotnet20(void)
static void test_InstallAssembly(void)
static LPCWSTR LPVOID HMODULE * phModDll
static LPWSTR PDWORD pcchPath
_In_ ULONG _In_ ULONG Offset
#define IMAGE_NT_OPTIONAL_HDR32_MAGIC
#define IMAGE_SUBSYSTEM_WINDOWS_CUI
#define IMAGE_DLLCHARACTERISTICS_NX_COMPAT
#define IMAGE_SCN_CNT_INITIALIZED_DATA
#define IMAGE_SCN_CNT_CODE
#define IMAGE_SCN_MEM_EXECUTE
#define IMAGE_SCN_MEM_DISCARDABLE
#define IMAGE_DLLCHARACTERISTICS_NO_SEH
#define IMAGE_SCN_MEM_READ
#define IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE
#define IMAGE_FILE_EXECUTABLE_IMAGE
#define IMAGE_FILE_MACHINE_I386
#define IMAGE_FILE_LOCAL_SYMS_STRIPPED
#define IMAGE_NT_SIGNATURE
#define IMAGE_FILE_LINE_NUMS_STRIPPED
#define IMAGE_DOS_SIGNATURE
#define IMAGE_FILE_32BIT_MACHINE
IMAGE_COR20_HEADER clrhdr
IMAGE_IMPORT_DESCRIPTOR importdesc
IMAGE_RESOURCE_DIRECTORY topresdir
METADATASTREAMHDR guidhdr
IMPORTLOOKUPTABLE importlookup
IMAGE_RESOURCE_DIRECTORY res10dir
IMAGE_SECTION_HEADER rsrc
IMAGE_NT_HEADERS32 nthdrs
IMAGE_RESOURCE_DIRECTORY_ENTRY label10res
IMAGE_RESOURCE_DATA_ENTRY resdata
IMAGE_RESOURCE_DIRECTORY_ENTRY label11res
METADATASTREAMHDR roothdr
IMAGE_RESOURCE_DIRECTORY res11dir
MANIFESTRESTABLE manifestrestable
IMAGE_RESOURCE_DIRECTORY_ENTRY labelres
HINTNAMETABLE hintnametable
IMAGE_SECTION_HEADER reloc
STRINGFILEINFO strfileinfo
METADATASTREAMHDR blobhdr
IMAGE_SECTION_HEADER text
METADATATABLESHDR tableshdr
METADATASTREAMHDR stringshdr
#define VS_FFI_STRUCVERSION
#define VS_FFI_FILEFLAGSMASK
#define INVALID_FILE_ATTRIBUTES
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE _In_ USHORT _In_ USHORT Version
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
_Reserved_ PVOID Reserved
#define E_NOT_SUFFICIENT_BUFFER
#define HRESULT_FROM_WIN32(x)
@ COMIMAGE_FLAGS_STRONGNAMESIGNED
struct _ASSEMBLY_INFO ASSEMBLY_INFO
_Must_inspect_result_ _In_ ULONG Flags