22#include <wine/unicode.h>
28#define GetProcessHeap() RtlGetProcessHeap()
29#define GetCurrentProcess() NtCurrentProcess()
32#define FILE_END_OF_FILE_INFORMATION FILE_STANDARD_INFORMATION
33#define FileEndOfFileInformation FileStandardInformation
34#define RELATIVE_PATH RtlPathTypeRelative
35#define windows_dir SharedUserData->NtSystemRoot
36#define ARRAY_SIZE(a) (sizeof(a)/sizeof((a)[0]))
37#define wcsnicmp _wcsnicmp
38#define swprintf _snwprintf
39#define wcsicmp _wcsicmp
43#undef CREATEPROCESS_MANIFEST_RESOURCE_ID
45BOOLEAN RtlpNotAllowingMultipleActivation;
49#define ACTCTX_FLAGS_ALL (\
50 ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID |\
51 ACTCTX_FLAG_LANGID_VALID |\
52 ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID |\
53 ACTCTX_FLAG_RESOURCE_NAME_VALID |\
54 ACTCTX_FLAG_SET_PROCESS_DEFAULT |\
55 ACTCTX_FLAG_APPLICATION_NAME_VALID |\
56 ACTCTX_FLAG_SOURCE_IS_ASSEMBLYREF |\
57 ACTCTX_FLAG_HMODULE_VALID )
59#define ACTCTX_MAGIC 0xC07E3E11
60#define STRSECTION_MAGIC 0x64487353
61#define GUIDSECTION_MAGIC 0x64487347
63#define ACTCTX_FAKE_HANDLE ((HANDLE) 0xf00baa)
66#define RT_MANIFEST ((ULONG_PTR)24)
67#define CREATEPROCESS_MANIFEST_RESOURCE_ID ((ULONG_PTR)1)
106#define MAX_NAMESPACES 64
552typedef struct _ASSEMBLY_STORAGE_MAP_ENTRY
557} ASSEMBLY_STORAGE_MAP_ENTRY, *PASSEMBLY_STORAGE_MAP_ENTRY;
559typedef struct _ASSEMBLY_STORAGE_MAP
563 PASSEMBLY_STORAGE_MAP_ENTRY *AssemblyArray;
564} ASSEMBLY_STORAGE_MAP, *PASSEMBLY_STORAGE_MAP;
574 PACTIVATION_CONTEXT_DATA ActivationContextData;
575 PVOID NotificationRoutine;
577 ULONG SentNotifications[8];
578 ULONG DisabledNotifications[8];
579 ASSEMBLY_STORAGE_MAP StorageMap;
580 PASSEMBLY_STORAGE_MAP_ENTRY InlineStorageMapEntries;
581 ULONG StackTraceIndex;
582 PVOID StackTraces[4][4];
612#elif defined __x86_64__
616#elif defined __aarch64__
622static const WCHAR asmv1W[] = {
'u',
'r',
'n',
':',
's',
'c',
'h',
'e',
'm',
'a',
's',
'-',
'm',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'-',
'c',
'o',
'm',
':',
'a',
's',
'm',
'.',
'v',
'1',0};
623static const WCHAR asmv2W[] = {
'u',
'r',
'n',
':',
's',
'c',
'h',
'e',
'm',
'a',
's',
'-',
'm',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'-',
'c',
'o',
'm',
':',
'a',
's',
'm',
'.',
'v',
'2',0};
624static const WCHAR asmv3W[] = {
'u',
'r',
'n',
':',
's',
'c',
'h',
'e',
'm',
'a',
's',
'-',
'm',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'-',
'c',
'o',
'm',
':',
'a',
's',
'm',
'.',
'v',
'3',0};
626static const WCHAR assemblyIdentityW[] = {
'a',
's',
's',
'e',
'm',
'b',
'l',
'y',
'I',
'd',
'e',
'n',
't',
'i',
't',
'y',0};
627static const WCHAR bindingRedirectW[] = {
'b',
'i',
'n',
'd',
'i',
'n',
'g',
'R',
'e',
'd',
'i',
'r',
'e',
'c',
't',0};
629static const WCHAR clrSurrogateW[] = {
'c',
'l',
'r',
'S',
'u',
'r',
'r',
'o',
'g',
'a',
't',
'e',0};
631static const WCHAR comInterfaceExternalProxyStubW[] = {
'c',
'o',
'm',
'I',
'n',
't',
'e',
'r',
'f',
'a',
'c',
'e',
'E',
'x',
't',
'e',
'r',
'n',
'a',
'l',
'P',
'r',
'o',
'x',
'y',
'S',
't',
'u',
'b',0};
632static const WCHAR comInterfaceProxyStubW[] = {
'c',
'o',
'm',
'I',
'n',
't',
'e',
'r',
'f',
'a',
'c',
'e',
'P',
'r',
'o',
'x',
'y',
'S',
't',
'u',
'b',0};
633static const WCHAR dependencyW[] = {
'd',
'e',
'p',
'e',
'n',
'd',
'e',
'n',
'c',
'y',0};
634static const WCHAR dependentAssemblyW[] = {
'd',
'e',
'p',
'e',
'n',
'd',
'e',
'n',
't',
'A',
's',
's',
'e',
'm',
'b',
'l',
'y',0};
635static const WCHAR descriptionW[] = {
'd',
'e',
's',
'c',
'r',
'i',
'p',
't',
'i',
'o',
'n',0};
639static const WCHAR noInheritableW[] = {
'n',
'o',
'I',
'n',
'h',
'e',
'r',
'i',
't',
'a',
'b',
'l',
'e',0};
641static const WCHAR windowClassW[] = {
'w',
'i',
'n',
'd',
'o',
'w',
'C',
'l',
'a',
's',
's',0};
648static const WCHAR manifestVersionW[] = {
'm',
'a',
'n',
'i',
'f',
'e',
's',
't',
'V',
'e',
'r',
's',
'i',
'o',
'n',0};
651static const WCHAR newVersionW[] = {
'n',
'e',
'w',
'V',
'e',
'r',
's',
'i',
'o',
'n',0};
652static const WCHAR oldVersionW[] = {
'o',
'l',
'd',
'V',
'e',
'r',
's',
'i',
'o',
'n',0};
654static const WCHAR processorArchitectureW[] = {
'p',
'r',
'o',
'c',
'e',
's',
's',
'o',
'r',
'A',
'r',
'c',
'h',
'i',
't',
'e',
'c',
't',
'u',
'r',
'e',0};
656static const WCHAR publicKeyTokenW[] = {
'p',
'u',
'b',
'l',
'i',
'c',
'K',
'e',
'y',
'T',
'o',
'k',
'e',
'n',0};
657static const WCHAR threadingmodelW[] = {
't',
'h',
'r',
'e',
'a',
'd',
'i',
'n',
'g',
'M',
'o',
'd',
'e',
'l',0};
665static const WCHAR restrictedW[] = {
'R',
'E',
'S',
'T',
'R',
'I',
'C',
'T',
'E',
'D',0};
668static const WCHAR hasdiskimageW[] = {
'H',
'A',
'S',
'D',
'I',
'S',
'K',
'I',
'M',
'A',
'G',
'E',0};
670static const WCHAR miscstatusW[] = {
'm',
'i',
's',
'c',
'S',
't',
'a',
't',
'u',
's',0};
671static const WCHAR miscstatusiconW[] = {
'm',
'i',
's',
'c',
'S',
't',
'a',
't',
'u',
's',
'I',
'c',
'o',
'n',0};
672static const WCHAR miscstatuscontentW[] = {
'm',
'i',
's',
'c',
'S',
't',
'a',
't',
'u',
's',
'C',
'o',
'n',
't',
'e',
'n',
't',0};
673static const WCHAR miscstatusthumbnailW[] = {
'm',
'i',
's',
'c',
'S',
't',
'a',
't',
'u',
's',
'T',
'h',
'u',
'm',
'b',
'n',
'a',
'i',
'l',0};
674static const WCHAR miscstatusdocprintW[] = {
'm',
'i',
's',
'c',
'S',
't',
'a',
't',
'u',
's',
'D',
'o',
'c',
'P',
'r',
'i',
'n',
't',0};
675static const WCHAR baseInterfaceW[] = {
'b',
'a',
's',
'e',
'I',
'n',
't',
'e',
'r',
'f',
'a',
'c',
'e',0};
676static const WCHAR nummethodsW[] = {
'n',
'u',
'm',
'M',
'e',
't',
'h',
'o',
'd',
's',0};
677static const WCHAR proxyStubClsid32W[] = {
'p',
'r',
'o',
'x',
'y',
'S',
't',
'u',
'b',
'C',
'l',
's',
'i',
'd',
'3',
'2',0};
678static const WCHAR runtimeVersionW[] = {
'r',
'u',
'n',
't',
'i',
'm',
'e',
'V',
'e',
'r',
's',
'i',
'o',
'n',0};
679static const WCHAR mscoreeW[] = {
'M',
'S',
'C',
'O',
'R',
'E',
'E',
'.',
'D',
'L',
'L',0};
680static const WCHAR mscoree2W[] = {
'm',
's',
'c',
'o',
'r',
'e',
'e',
'.',
'd',
'l',
'l',0};
682static const WCHAR activatewhenvisibleW[] = {
'a',
'c',
't',
'i',
'v',
'a',
't',
'e',
'w',
'h',
'e',
'n',
'v',
'i',
's',
'i',
'b',
'l',
'e',0};
683static const WCHAR actslikebuttonW[] = {
'a',
'c',
't',
's',
'l',
'i',
'k',
'e',
'b',
'u',
't',
't',
'o',
'n',0};
684static const WCHAR actslikelabelW[] = {
'a',
'c',
't',
's',
'l',
'i',
'k',
'e',
'l',
'a',
'b',
'e',
'l',0};
687static const WCHAR canlinkbyole1W[] = {
'c',
'a',
'n',
'l',
'i',
'n',
'k',
'b',
'y',
'o',
'l',
'e',
'1',0};
688static const WCHAR cantlinkinsideW[] = {
'c',
'a',
'n',
't',
'l',
'i',
'n',
'k',
'i',
'n',
's',
'i',
'd',
'e',0};
689static const WCHAR ignoreactivatewhenvisibleW[] = {
'i',
'g',
'n',
'o',
'r',
'e',
'a',
'c',
't',
'i',
'v',
'a',
't',
'e',
'w',
'h',
'e',
'n',
'v',
'i',
's',
'i',
'b',
'l',
'e',0};
691static const WCHAR insertnotreplaceW[] = {
'i',
'n',
's',
'e',
'r',
't',
'n',
'o',
't',
'r',
'e',
'p',
'l',
'a',
'c',
'e',0};
693static const WCHAR invisibleatruntimeW[] = {
'i',
'n',
'v',
'i',
's',
'i',
'b',
'l',
'e',
'a',
't',
'r',
'u',
'n',
't',
'i',
'm',
'e',0};
694static const WCHAR islinkobjectW[] = {
'i',
's',
'l',
'i',
'n',
'k',
'o',
'b',
'j',
'e',
'c',
't',0};
695static const WCHAR nouiactivateW[] = {
'n',
'o',
'u',
'i',
'a',
'c',
't',
'i',
'v',
'a',
't',
'e',0};
696static const WCHAR onlyiconicW[] = {
'o',
'n',
'l',
'y',
'i',
'c',
'o',
'n',
'i',
'c',0};
697static const WCHAR recomposeonresizeW[] = {
'r',
'e',
'c',
'o',
'm',
'p',
'o',
's',
'e',
'o',
'n',
'r',
'e',
's',
'i',
'z',
'e',0};
698static const WCHAR renderingisdeviceindependentW[] = {
'r',
'e',
'n',
'd',
'e',
'r',
'i',
'n',
'g',
'i',
's',
'd',
'e',
'v',
'i',
'c',
'e',
'i',
'n',
'd',
'e',
'p',
'e',
'n',
'd',
'e',
'n',
't',0};
699static const WCHAR setclientsitefirstW[] = {
's',
'e',
't',
'c',
'l',
'i',
'e',
'n',
't',
's',
'i',
't',
'e',
'f',
'i',
'r',
's',
't',0};
700static const WCHAR simpleframeW[] = {
's',
'i',
'm',
'p',
'l',
'e',
'f',
'r',
'a',
'm',
'e',0};
702static const WCHAR supportsmultilevelundoW[] = {
's',
'u',
'p',
'p',
'o',
'r',
't',
's',
'm',
'u',
'l',
't',
'i',
'l',
'e',
'v',
'e',
'l',
'u',
'n',
'd',
'o',0};
703static const WCHAR wantstomenumergeW[] = {
'w',
'a',
'n',
't',
's',
't',
'o',
'm',
'e',
'n',
'u',
'm',
'e',
'r',
'g',
'e',0};
705static const WCHAR compatibilityW[] = {
'c',
'o',
'm',
'p',
'a',
't',
'i',
'b',
'i',
'l',
'i',
't',
'y',0};
706static const WCHAR compatibilityNSW[] = {
'u',
'r',
'n',
':',
's',
'c',
'h',
'e',
'm',
'a',
's',
'-',
'm',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'-',
'c',
'o',
'm',
':',
'c',
'o',
'm',
'p',
'a',
't',
'i',
'b',
'i',
'l',
'i',
't',
'y',
'.',
'v',
'1',0};
707static const WCHAR applicationW[] = {
'a',
'p',
'p',
'l',
'i',
'c',
'a',
't',
'i',
'o',
'n',0};
708static const WCHAR supportedOSW[] = {
's',
'u',
'p',
'p',
'o',
'r',
't',
'e',
'd',
'O',
'S',0};
710static const WCHAR requestedExecutionLevelW[] = {
'r',
'e',
'q',
'u',
'e',
's',
't',
'e',
'd',
'E',
'x',
'e',
'c',
'u',
't',
'i',
'o',
'n',
'L',
'e',
'v',
'e',
'l',0};
711static const WCHAR requestedPrivilegesW[] = {
'r',
'e',
'q',
'u',
'e',
's',
't',
'e',
'd',
'P',
'r',
'i',
'v',
'i',
'l',
'e',
'g',
'e',
's',0};
714static const WCHAR windowsSettingsW[] = {
'w',
'i',
'n',
'd',
'o',
'w',
's',
'S',
'e',
't',
't',
'i',
'n',
'g',
's',0};
715static const WCHAR autoElevateW[] = {
'a',
'u',
't',
'o',
'E',
'l',
'e',
'v',
'a',
't',
'e',0};
716static const WCHAR disableThemingW[] = {
'd',
'i',
's',
'a',
'b',
'l',
'e',
'T',
'h',
'e',
'm',
'i',
'n',
'g',0};
717static const WCHAR disableWindowFilteringW[] = {
'd',
'i',
's',
'a',
'b',
'l',
'e',
'W',
'i',
'n',
'd',
'o',
'w',
'F',
'i',
'l',
't',
'e',
'r',
'i',
'n',
'g',0};
718static const WCHAR windowsSettings2005NSW[] = {
'h',
't',
't',
'p',
':',
'/',
'/',
's',
'c',
'h',
'e',
'm',
'a',
's',
'.',
'm',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'.',
'c',
'o',
'm',
'/',
'S',
'M',
'I',
'/',
'2',
'0',
'0',
'5',
'/',
'W',
'i',
'n',
'd',
'o',
'w',
's',
'S',
'e',
't',
't',
'i',
'n',
'g',
's',0};
719static const WCHAR windowsSettings2011NSW[] = {
'h',
't',
't',
'p',
':',
'/',
'/',
's',
'c',
'h',
'e',
'm',
'a',
's',
'.',
'm',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'.',
'c',
'o',
'm',
'/',
'S',
'M',
'I',
'/',
'2',
'0',
'1',
'1',
'/',
'W',
'i',
'n',
'd',
'o',
'w',
's',
'S',
'e',
't',
't',
'i',
'n',
'g',
's',0};
720static const WCHAR windowsSettings2016NSW[] = {
'h',
't',
't',
'p',
':',
'/',
'/',
's',
'c',
'h',
'e',
'm',
'a',
's',
'.',
'm',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'.',
'c',
'o',
'm',
'/',
'S',
'M',
'I',
'/',
'2',
'0',
'1',
'6',
'/',
'W',
'i',
'n',
'd',
'o',
'w',
's',
'S',
'e',
't',
't',
'i',
'n',
'g',
's',0};
721static const WCHAR windowsSettings2017NSW[] = {
'h',
't',
't',
'p',
':',
'/',
'/',
's',
'c',
'h',
'e',
'm',
'a',
's',
'.',
'm',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'.',
'c',
'o',
'm',
'/',
'S',
'M',
'I',
'/',
'2',
'0',
'1',
'7',
'/',
'W',
'i',
'n',
'd',
'o',
'w',
's',
'S',
'e',
't',
't',
'i',
'n',
'g',
's',0};
723static const WCHAR dpiAwarenessW[] = {
'd',
'p',
'i',
'A',
'w',
'a',
'r',
'e',
'n',
'e',
's',
's',0};
724static const WCHAR gdiScalingW[] = {
'g',
'd',
'i',
'S',
'c',
'a',
'l',
'i',
'n',
'g',0};
725static const WCHAR highResolutionScrollingAwareW[] = {
'h',
'i',
'g',
'h',
'R',
'e',
's',
'o',
'l',
'u',
't',
'i',
'o',
'n',
'S',
'c',
'r',
'o',
'l',
'l',
'i',
'n',
'g',
'A',
'w',
'a',
'r',
'e',0};
726static const WCHAR longPathAwareW[] = {
'l',
'o',
'n',
'g',
'P',
'a',
't',
'h',
'A',
'w',
'a',
'r',
'e',0};
727static const WCHAR magicFutureSettingW[] = {
'm',
'a',
'g',
'i',
'c',
'F',
'u',
't',
'u',
'r',
'e',
'S',
'e',
't',
't',
'i',
'n',
'g',0};
728static const WCHAR printerDriverIsolationW[] = {
'p',
'r',
'i',
'n',
't',
'e',
'r',
'D',
'r',
'i',
'v',
'e',
'r',
'I',
's',
'o',
'l',
'a',
't',
'i',
'o',
'n',0};
729static const WCHAR ultraHighResolutionScrollingAwareW[] = {
'u',
'l',
't',
'r',
'a',
'H',
'i',
'g',
'h',
'R',
'e',
's',
'o',
'l',
'u',
't',
'i',
'o',
'n',
'S',
'c',
'r',
'o',
'l',
'l',
'i',
'n',
'g',
'A',
'w',
'a',
'r',
'e',0};
766static const WCHAR version_formatW[] = {
'%',
'u',
'.',
'%',
'u',
'.',
'%',
'u',
'.',
'%',
'u',0};
835 return (ch ==
' ' || ch ==
'\r' || ch ==
'\n' || ch ==
'\t');
887 DPRINT(
"add_assembly() actctx %p, activeframe ??\n",
actctx);
889 if (
actctx->num_assemblies ==
actctx->allocated_assemblies)
892 unsigned int new_count;
895 new_count =
actctx->allocated_assemblies * 2;
906 actctx->allocated_assemblies = new_count;
921 unsigned int new_count;
948 new_count *
sizeof(COMPATIBILITY_CONTEXT_ELEMENT) );
975 unsigned int new_count;
978 new_count =
array->allocated * 2;
980 array->base, new_count *
sizeof(*
array->base) );
989 array->allocated = new_count;
1004 case ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION:
1014 case ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION:
1021 case ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION:
1025 case ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION:
1028 case ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES:
1033 case ACTIVATION_CONTEXT_SECTION_APPLICATION_SETTINGS:
1047 if (!str1)
return !str2;
1081 TRACE(
"reusing existing assembly for %s arch %s version %u.%u.%u.%u\n",
1090 TRACE(
"reusing existing dependency for %s arch %s version %u.%u.%u.%u\n",
1099 unsigned int new_count;
1130 static const WCHAR undW[] = {
'_',0};
1131 static const WCHAR noneW[] = {
'n',
'o',
'n',
'e',0};
1132 static const WCHAR mskeyW[] = {
'd',
'e',
'a',
'd',
'b',
'e',
'e',
'f',0};
1176 {
',',
'p',
'r',
'o',
'c',
'e',
's',
's',
'o',
'r',
'A',
'r',
'c',
'h',
'i',
't',
'e',
'c',
't',
'u',
'r',
'e',
'=',0};
1177 static const WCHAR public_keyW[] =
1178 {
',',
'p',
'u',
'b',
'l',
'i',
'c',
'K',
'e',
'y',
'T',
'o',
'k',
'e',
'n',
'=',0};
1179 static const WCHAR typeW2[] =
1180 {
',',
't',
'y',
'p',
'e',
'=',0};
1181 static const WCHAR versionW2[] =
1182 {
',',
'v',
'e',
'r',
's',
'i',
'o',
'n',
'=',0};
1218 DPRINT1(
"Invalid activation context handle!\n");
1235 for (
i = 0;
i <
actctx->num_assemblies;
i++)
1288 FIXME(
"too many namespaces in manifest\n" );
1306 for (
i = xmlbuf->
ns_pos - 1;
i >= 0;
i--)
1328 if (*xmlbuf->
ptr ==
'/')
1331 if (xmlbuf->
ptr == xmlbuf->
end || *xmlbuf->
ptr !=
'>')
1339 if (*xmlbuf->
ptr ==
'>')
1374 xmlbuf->
ptr = xmlbuf->
end;
1418 for (
ptr = xmlbuf->
ptr; ptr < xmlbuf->
end;
ptr++)
if (*
ptr ==
'<')
break;
1421 xmlbuf->
ptr = xmlbuf->
end;
1425 if (
ptr + 3 < xmlbuf->
end &&
ptr[0] ==
'!' &&
ptr[1] ==
'-' &&
ptr[2] ==
'-')
1428 if (
ptr[0] ==
'-' &&
ptr[1] ==
'-' &&
ptr[2] ==
'>')
break;
1430 if (
ptr + 3 > xmlbuf->
end)
1432 xmlbuf->
ptr = xmlbuf->
end;
1442 if (ptr < xmlbuf->
end && *
ptr ==
'/')
1449 ERR(
"wrong closing element %s for %s\n",
1481 if (
ptr[0] ==
'?' &&
ptr[1] ==
'>')
1496 for (
ptr = xmlbuf->
ptr; ptr < xmlbuf->
end;
ptr++)
if (*
ptr ==
'<')
break;
1508 unsigned int ver[4];
1513 ver[0] = ver[1] = ver[2] = ver[3] =
pos = 0;
1514 for (curr =
str->ptr; curr < str->
ptr +
str->len; curr++)
1516 if (*curr >=
'0' && *curr <=
'9')
1518 ver[
pos] = ver[
pos] * 10 + *curr -
'0';
1519 if (ver[
pos] >= 0x10000)
goto error;
1521 else if (*curr ==
'.')
1610 TRACE(
"name=%s version=%s arch=%s\n",
1618 static const WCHAR apartW[] = {
'A',
'p',
'a',
'r',
't',
'm',
'e',
'n',
't',0};
1619 static const WCHAR neutralW[] = {
'N',
'e',
'u',
't',
'r',
'a',
'l',0};
1620 static const WCHAR freeW[] = {
'F',
'r',
'e',
'e',0};
1621 static const WCHAR bothW[] = {
'B',
'o',
't',
'h',0};
1670 while (i < value->
len)
1699 if (!new_progids)
return FALSE;
1731 if (!(
entity =
add_entity(&
dll->entities, ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)))
1813 for (curr =
str->ptr; curr < str->
ptr +
str->len; curr++)
1815 if (*curr >=
'0' && *curr <=
'9')
1816 num =
num * 10 + *curr -
'0';
1842 if (!(
entity =
add_entity(entities, ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)))
1863 if (!(
entity =
add_entity(&
dll->entities, ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION)))
1924 while (i < value->
len)
1953 unsigned int ver[2];
1958 ver[0] = ver[1] =
pos = 0;
1959 for (curr =
str->ptr; curr < str->
ptr +
str->len; curr++)
1961 if (*curr >=
'0' && *curr <=
'9')
1963 ver[
pos] = ver[
pos] * 10 + *curr -
'0';
1964 if (ver[
pos] >= 0x10000)
goto error;
1966 else if (*curr ==
'.')
1988 if (!(
entity =
add_entity(&
dll->entities, ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION)))
2024 return (
len + 3) & ~3;
2029 static const WCHAR fmtW[] = {
'%',
'u',
'.',
'%',
'u',
'.',
'%',
'u',
'.',
'%',
'u',0};
2046 if (!(
entity =
add_entity(&
dll->entities, ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION)))
2296 memset(&ai, 0,
sizeof(ai));
2301 static const WCHAR allowDelayedBindingW[] = {
'a',
'l',
'l',
'o',
'w',
'D',
'e',
'l',
'a',
'y',
'e',
'd',
'B',
'i',
'n',
'd',
'i',
'n',
'g',0};
2302 static const WCHAR trueW[] = {
't',
'r',
'u',
'e',0};
2323 TRACE(
"adding name=%s version=%s arch=%s\n",
2417 static const WCHAR sha1W[] = {
'S',
'H',
'A',
'1',0};
2445 WARN(
"asmv2:hash (undocumented) not supported\n");
2474 COMPATIBILITY_CONTEXT_ELEMENT *compat;
2487 compat->Type = ACTCTX_COMPATIBILITY_ELEMENT_TYPE_OS;
2488 compat->Id = compat_id;
2629 static const WCHAR levelW[] = {
'l',
'e',
'v',
'e',
'l',0};
2630 static const WCHAR asInvokerW[] = {
'a',
's',
'I',
'n',
'v',
'o',
'k',
'e',
'r',0};
2631 static const WCHAR requireAdministratorW[] = {
'r',
'e',
'q',
'u',
'i',
'r',
'e',
'A',
'd',
'm',
'i',
'n',
'i',
's',
't',
'r',
'a',
't',
'o',
'r',0};
2632 static const WCHAR highestAvailableW[] = {
'h',
'i',
'g',
'h',
'e',
's',
't',
'A',
'v',
'a',
'i',
'l',
'a',
'b',
'l',
'e',0};
2633 static const WCHAR uiAccessW[] = {
'u',
'i',
'A',
'c',
'c',
'e',
's',
's',0};
2634 static const WCHAR falseW[] = {
'f',
'a',
'l',
's',
'e',0};
2635 static const WCHAR trueW[] = {
't',
'r',
'u',
'e',0};
2744 TRACE(
"(%p)\n", xmlbuf);
2750 static const WCHAR v10W[] = {
'1',
'.',
'0',0};
2813 if (!xmlbuf->
error && expected_ai)
2819 FIXME(
"wrong version for assembly manifest: %u.%u.%u.%u / %u.%u.%u.%u\n",
2833 FIXME(
"wrong version for shared assembly manifest\n");
2894 if (xmlbuf->
ptr != xmlbuf->
end)
2896 FIXME(
"parse error\n");
2928 : ACTIVATION_CONTEXT_PATH_TYPE_NONE;
2947 xmlbuf.
ptr = new_buff;
2961 DPRINT1(
"RtlMultiByteToUnicodeSize failed with %lx\n",
status);
2969 DPRINT1(
"RtlMultiByteToUnicodeN failed with %lx\n",
status);
2973 xmlbuf.
ptr = new_buff;
2987 attr.RootDirectory = 0;
2991 attr.SecurityQualityOfService =
NULL;
3018 else TRACE(
"looking for res %s in module %p %s\n",
debugstr_w(resname),
3032 else if (resname[0] ==
'#')
3063 void *
root,
int want_dir );
3067 void *
root,
int want_dir )
3072 for (
pos =
dir->NumberOfNamedEntries; pos < dir->NumberOfNamedEntries +
dir->NumberOfIdEntries;
pos++)
3074 if (!
entry[
pos].DataIsDirectory == !want_dir)
3100 if (!(
ptr = find_first_id_entry(resdirptr,
root, 1)))
3128 WCHAR resnameBuf[20];
3134 resptr = resnameBuf;
3140 attr.RootDirectory = 0;
3144 attr.SecurityQualityOfService =
NULL;
3189 attr.RootDirectory = 0;
3193 attr.SecurityQualityOfService =
NULL;
3220 static const WCHAR fmtW[] = {
'.',
'%',
'l',
'u',0 };
3268 static const WCHAR lookup_fmtW[] =
3269 {
'%',
's',
'_',
'%',
's',
'_',
'%',
's',
'_',
'%',
'u',
'.',
'%',
'u',
'.',
'*',
'.',
'*',
'_',
3270 '%',
's',
'_',
'*',
'.',
'm',
'a',
'n',
'i',
'f',
'e',
's',
't',0};
3271 static const WCHAR wine_trailerW[] = {
'd',
'e',
'a',
'd',
'b',
'e',
'e',
'f',
'.',
'm',
'a',
'n',
'i',
'f',
'e',
's',
't'};
3277 unsigned int data_pos = 0, data_len,
len;
3294 ULONG build, revision;
3296 data_len =
io.Information;
3300 if (data_pos >= data_len)
3305 data_len =
io.Information;
3311 else data_pos = data_len;
3315 if (build < min_build)
continue;
3316 tmp =
wcschr(tmp,
'.') + 1;
3318 if (build == min_build && revision < min_revision)
continue;
3319 tmp =
wcschr(tmp,
'_') + 1;
3320 tmp =
wcschr(tmp,
'_') + 1;
3331 min_revision = revision;
3334 ai->
version.revision = revision;
3357 static const WCHAR manifest_dirW[] =
3358 {
'\\',
'w',
'i',
'n',
's',
'x',
's',
'\\',
'm',
'a',
'n',
'i',
'f',
'e',
's',
't',
's',0};
3377 attr.RootDirectory = 0;
3379 attr.ObjectName = &path_us;
3381 attr.SecurityQualityOfService =
NULL;
3405 path[path_us.Length/
sizeof(
WCHAR)] =
'\\';
3425 static const WCHAR dotDllW[] = {
'.',
'd',
'l',
'l',0};
3433 TRACE(
"looking for name=%s version=%s arch=%s\n",
3464 for (
i = 0;
i < 4;
i++)
3522 FIXME(
"Could not find dependent assembly %s (%s)\n",
3543 if (
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame)
3544 *
handle =
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame->ActivationContext;
3564 else if (!*
handle && (
class != ActivationContextBasicInformation))
3581 for (
i = 0;
i <
actctx->num_assemblies;
i++)
3589 total_len +=
sizeof(*index);
3590 total_len +=
sizeof(*data);
3599 total_len +=
sizeof(*header);
3606 header->size =
sizeof(*header);
3608 header->index_offset =
sizeof(*header);
3612 for (
i = 0;
i <
actctx->num_assemblies;
i++)
3632 index->name_offset = name_offset;
3635 index->data_len =
sizeof(*data);
3636 index->rosterindex =
i + 1;
3640 data->size =
sizeof(*data);
3726 DPRINT(
"actctx->dllredirect_section: %p\n",
actctx->dllredirect_section);
3727 if (!
actctx->dllredirect_section)
3746 data->ulDataFormatVersion = 1;
3750 data->ulSectionGlobalDataLength = 0;
3751 data->lpSectionBase =
actctx->dllredirect_section;
3756 data->ulAssemblyRosterIndex =
index->rosterindex;
3774 unsigned int i,
j,
k, total_len = 0, class_count = 0;
3781 for (
i = 0;
i <
actctx->num_assemblies;
i++)
3787 for (
k = 0;
k <
dll->entities.num;
k++)
3790 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION)
3796 total_len +=
sizeof(*index);
3797 total_len +=
sizeof(*data);
3814 total_len +=
sizeof(*header);
3821 header->size =
sizeof(*header);
3822 header->count = class_count;
3823 header->index_offset =
sizeof(*header);
3827 for (
i = 0;
i <
actctx->num_assemblies;
i++)
3833 for (
k = 0;
k <
dll->entities.num;
k++)
3836 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION)
3838 static const WCHAR exclW[] = {
'!',0};
3839 ULONG versioned_len, module_len;
3854 versioned_len =
str.Length;
3857 index->name_offset = name_offset;
3860 index->data_len =
sizeof(*data) + versioned_len + module_len + 2*
sizeof(
WCHAR) ;
3861 index->rosterindex =
i + 1;
3865 data->size =
sizeof(*data);
3867 data->name_len = versioned_len;
3868 data->name_offset =
sizeof(*data);
3880 ptrW[
data->module_len/
sizeof(
WCHAR)] = 0;
3921 if (!
actctx->wndclass_section)
3936 for (
i = 0;
i <
actctx->wndclass_section->count;
i++)
3959 data->ulDataFormatVersion = 1;
3960 data->lpData =
class;
3962 data->ulLength =
class->size +
class->name_len +
class->module_len + 2*
sizeof(
WCHAR);
3964 data->ulSectionGlobalDataLength = 0;
3965 data->lpSectionBase =
actctx->wndclass_section;
3970 data->ulAssemblyRosterIndex =
index->rosterindex;
3978 unsigned int i,
j,
k, total_len = 0, tlib_count = 0, names_len = 0;
3980 ULONG module_offset, data_offset;
3985 for (
i = 0;
i <
actctx->num_assemblies;
i++)
3991 for (
k = 0;
k <
dll->entities.num;
k++)
3994 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION)
3997 total_len +=
sizeof(*index);
3998 total_len +=
sizeof(*data);
4013 total_len +=
sizeof(*header);
4020 header->size =
sizeof(*header);
4021 header->count = tlib_count;
4024 module_offset =
sizeof(*header);
4027 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4033 for (
k = 0;
k <
dll->entities.num;
k++)
4036 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION)
4038 ULONG module_len, help_len;
4058 index->data_offset = data_offset;
4060 index->rosterindex =
i + 1;
4064 data->size =
sizeof(*data);
4066 data->name_len = module_len;
4067 data->name_offset = module_offset;
4072 data->help_offset =
sizeof(*data);
4089 data_offset +=
sizeof(*data);
4093 module_offset += module_len +
sizeof(
WCHAR);
4118 if (!
actctx->tlib_section)
4134 data->ulDataFormatVersion = 1;
4135 data->lpData = tlib;
4139 data->ulSectionGlobalDataLength =
actctx->tlib_section->names_len;
4145 data->ulAssemblyRosterIndex =
index->rosterindex;
4159 guid->Data3 &= 0x0fff;
4160 guid->Data3 |= (4 << 12);
4161 guid->Data4[0] &= 0x3f;
4162 guid->Data4[0] |= 0x80;
4166 unsigned int *
count,
unsigned int *
len,
unsigned int *module_len)
4170 for (
i = 0;
i < entities->
num;
i++)
4173 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)
4220 for (
i = 0;
i < entities->
num;
i++)
4223 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)
4245 (*index)->data_offset = *data_offset;
4246 (*index)->data_len =
sizeof(*data);
4247 (*index)->rosterindex = rosterindex;
4252 alias_index = (*index) +
section->count/2;
4260 data->size =
sizeof(*data);
4262 data->clsid = (*index)->guid;
4274 data->name_len = module_len;
4275 data->name_offset = *module_offset;
4277 data->progid_offset =
data->progid_len ?
data->size : 0;
4278 data->clrdata_len = 0;
4288 if (
data->miscstatus)
4290 if (
data->miscstatuscontent)
4292 if (
data->miscstatusthumbnail)
4294 if (
data->miscstatusicon)
4296 if (
data->miscstatusdocprint)
4300 if (
data->clrdata_offset)
4304 clrdata->
size =
sizeof(*clrdata);
4305 clrdata->
res[0] = 0;
4306 clrdata->
res[1] = 2;
4313 clrdata->
res2[0] = 0;
4314 clrdata->
res2[1] = 0;
4342 if (
data->progid_len)
4343 data->progid_offset +=
data->clrdata_len;
4344 (*index)->data_len +=
sizeof(*clrdata);
4357 if (
data->progid_len)
4361 ptrW[
data->progid_len/
sizeof(
WCHAR)] = 0;
4376 alias_index->
data_len = (*index)->data_len;
4384 (*data_offset) +=
sizeof(*clrdata);
4396 unsigned int i,
j, total_len = 0, class_count = 0, names_len = 0;
4398 ULONG module_offset, data_offset;
4404 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4416 total_len +=
sizeof(*header);
4423 header->size =
sizeof(*header);
4424 header->count = 2*class_count;
4427 module_offset =
sizeof(*header);
4431 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4469 if (!
actctx->comserver_section)
4485 data->ulDataFormatVersion = 1;
4486 data->lpData = comclass;
4490 data->lpSectionGlobalData = (
BYTE*)
actctx->comserver_section +
actctx->comserver_section->names_offset;
4491 data->ulSectionGlobalDataLength =
actctx->comserver_section->names_len;
4492 data->lpSectionBase =
actctx->comserver_section;
4497 data->ulAssemblyRosterIndex =
index->rosterindex;
4506 for (
i = 0;
i < entities->
num;
i++)
4509 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION)
4524 for (
i = 0;
i < entities->
num;
i++)
4527 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION)
4544 (*index)->data_offset = *data_offset;
4546 (*index)->rosterindex = rosterindex;
4549 data->size =
sizeof(*data);
4562 data->iid = (*index)->guid;
4587 data->name_offset =
data->name_len ?
sizeof(*data) : 0;
4599 *data_offset +=
sizeof(*data);
4610 unsigned int i,
j, total_len = 0,
count = 0;
4616 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4628 total_len +=
sizeof(*header);
4635 header->size =
sizeof(*header);
4637 header->index_offset =
sizeof(*header);
4641 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4682 if (!
actctx->ifaceps_section)
4698 data->ulDataFormatVersion = 1;
4699 data->lpData = iface;
4702 data->ulSectionGlobalDataLength = 0;
4703 data->lpSectionBase =
actctx->ifaceps_section;
4708 data->ulAssemblyRosterIndex =
index->rosterindex;
4715 unsigned int i,
j, total_len = 0,
count = 0;
4722 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4728 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES)
4732 total_len +=
sizeof(*index) +
sizeof(*data);
4743 total_len +=
sizeof(*header);
4750 header->size =
sizeof(*header);
4752 header->index_offset =
sizeof(*header);
4756 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4762 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES)
4764 ULONG version_len, name_len;
4784 index->data_offset = data_offset;
4786 index->rosterindex =
i + 1;
4790 data->size =
sizeof(*data);
4806 if (
data->version_len)
4810 ptrW[
data->version_len/
sizeof(
WCHAR)] = 0;
4813 data_offset +=
index->data_offset;
4836 if (!
actctx->clrsurrogate_section)
4852 data->ulDataFormatVersion = 1;
4853 data->lpData = surrogate;
4860 data->ulSectionGlobalDataLength = 0;
4861 data->lpSectionBase =
actctx->clrsurrogate_section;
4866 data->ulAssemblyRosterIndex =
index->rosterindex;
4873 unsigned int i,
j, single_len;
4876 for (
i = 0;
i < entities->
num;
i++)
4879 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)
4910 (*index)->name_offset = *data_offset;
4911 (*index)->name_len =
str.Length;
4913 (*index)->data_len =
sizeof(*data);
4914 (*index)->rosterindex = rosterindex;
4920 data->size =
sizeof(*data);
4922 data->clsid_offset = *global_offset;
4927 ptrW[(*index)->name_len/
sizeof(
WCHAR)] = 0;
4934 *global_offset +=
sizeof(
GUID);
4935 *data_offset +=
data->size;
4945 for (
i = 0;
i < entities->
num;
i++)
4948 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)
4978 unsigned int i,
j, total_len = 0,
count = 0;
4985 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4997 total_len +=
sizeof(*header);
5004 header->size =
sizeof(*header);
5012 global_offset =
header->global_offset;
5014 for (
i = 0;
i <
actctx->num_assemblies;
i++)
5055 if (!
actctx->comserver_section)
5066 if (!
actctx->progid_section)
5084 data->ulDataFormatVersion = 1;
5087 data->lpSectionGlobalData = (
BYTE*)
actctx->progid_section +
actctx->progid_section->global_offset;
5088 data->ulSectionGlobalDataLength =
actctx->progid_section->global_len;
5089 data->lpSectionBase =
actctx->progid_section;
5094 data->ulAssemblyRosterIndex =
index->rosterindex;
5106 switch (section_kind)
5109 case ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION:
5110 DPRINT1(
"Unsupported yet section_kind %x\n", section_kind);
5113 case ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION:
5116 case ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION:
5119 case ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION:
5122 case ACTIVATION_CONTEXT_SECTION_GLOBAL_OBJECT_RENAME_TABLE:
5123 FIXME(
"Unsupported yet section_kind %x\n", section_kind);
5126 WARN(
"Unknown section_kind %x\n", section_kind);
5132 if (
data && (
flags & FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX))
5145 switch (section_kind)
5147 case ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION:
5150 case ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION:
5153 case ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION:
5156 case ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES:
5160 WARN(
"Unknown section_kind %x\n", section_kind);
5166 if (
flags & FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX)
5178 for (
i = 0;
i <
actctx->num_assemblies;
i++)
5184 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_APPLICATION_SETTINGS &&
5199 ctx.cbSize =
sizeof(
ctx);
5201 ctx.dwFlags = ACTCTX_FLAG_RESOURCE_NAME_VALID | ACTCTX_FLAG_HMODULE_VALID;
5202 ctx.hModule =
NtCurrentTeb()->ProcessEnvironmentBlock->ImageBaseAddress;
5226 IN PACTIVATION_CONTEXT_DATA ActivationContextData,
5232 const ACTCTXW *pActCtx = (
PVOID)ActivationContextData;
5241 TRACE(
"%p %08x\n", pActCtx, pActCtx ? pActCtx->dwFlags : 0);
5243 if (!pActCtx || pActCtx->cbSize <
sizeof(*pActCtx) ||
5253 actctx->config.type = ACTIVATION_CONTEXT_PATH_TYPE_NONE;
5255 actctx->appdir.type = ACTIVATION_CONTEXT_PATH_TYPE_WIN32_FILE;
5256 if (pActCtx->dwFlags & ACTCTX_FLAG_APPLICATION_NAME_VALID)
5266 if (pActCtx->dwFlags & ACTCTX_FLAG_HMODULE_VALID)
module = pActCtx->hModule;
5278 if (pActCtx->lpSource && !((pActCtx->dwFlags & ACTCTX_FLAG_RESOURCE_NAME_VALID) &&
5279 (pActCtx->dwFlags & ACTCTX_FLAG_HMODULE_VALID)))
5284 if (pActCtx->dwFlags & ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID &&
5287 DWORD dir_len, source_len;
5289 dir_len =
wcslen(pActCtx->lpAssemblyDirectory);
5290 source_len =
wcslen(pActCtx->lpSource);
5322 if (pActCtx->dwFlags & ACTCTX_FLAG_LANGID_VALID)
lang = pActCtx->wLangId;
5323 if (pActCtx->dwFlags & ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID)
directory = pActCtx->lpAssemblyDirectory;
5325 if (pActCtx->dwFlags & ACTCTX_FLAG_RESOURCE_NAME_VALID)
5328 if (pActCtx->dwFlags & ACTCTX_FLAG_HMODULE_VALID)
5331 pActCtx->lpResourceName,
lang );
5335 pActCtx->hModule, pActCtx->lpResourceName );
5337 else if (pActCtx->lpSource && pActCtx->lpResourceName)
5340 file, pActCtx->lpResourceName,
lang );
5343 NULL, pActCtx->lpResourceName );
5428 DPRINT(
"ActiveSP %p: ACTIVATE (ActiveFrame %p -> NewFrame %p, Context %p)\n",
5460 DPRINT(
"ActiveSP %p: DEACTIVATE (ActiveFrame %p -> PreviousFrame %p)\n",
5462 NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame,
5468 while (
top !=
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame)
5490 ActiveFrame =
Stack->ActiveFrame;
5498 ActiveFrame = PrevFrame;
5518 RtlFreeActivationContextStack(
NtCurrentTeb()->ActivationContextStackPointer);
5523 frame =
NtCurrentTeb()->ActivationContextStack.ActiveFrame;
5541 if (
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame)
5543 *
handle =
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame->ActivationContext;
5560 for (frame =
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame; frame; frame = frame->
Previous)
5582 if (retlen) *retlen = 0;
5587 case ActivationContextBasicInformation:
5589 ACTIVATION_CONTEXT_BASIC_INFORMATION *
info =
buffer;
5591 if (retlen) *retlen =
sizeof(*info);
5600 case ActivationContextDetailedInformation:
5602 ACTIVATION_CONTEXT_DETAILED_INFORMATION *acdi =
buffer;
5604 SIZE_T len, manifest_len = 0, config_len = 0, appdir_len = 0;
5615 len =
sizeof(*acdi) + (manifest_len + config_len + appdir_len) *
sizeof(
WCHAR);
5617 if (retlen) *retlen =
len;
5621 acdi->ulFormatVersion =
assembly ? 1 : 0;
5622 acdi->ulAssemblyCount =
actctx->num_assemblies;
5625 acdi->ulRootConfigurationPathType =
actctx->config.type;
5626 acdi->ulRootConfigurationPathChars =
actctx->config.info ? config_len - 1 : 0;
5627 acdi->ulAppDirPathType =
actctx->appdir.type;
5628 acdi->ulAppDirPathChars =
actctx->appdir.info ? appdir_len - 1 : 0;
5632 acdi->lpRootManifestPath =
ptr;
5634 ptr += manifest_len;
5636 else acdi->lpRootManifestPath =
NULL;
5639 acdi->lpRootConfigurationPath =
ptr;
5643 else acdi->lpRootConfigurationPath =
NULL;
5646 acdi->lpAppDirPath =
ptr;
5649 else acdi->lpAppDirPath =
NULL;
5653 case AssemblyDetailedInformationInActivationContext:
5655 ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION *afdi =
buffer;
5671 id_len =
wcslen(assembly_id) + 1;
5680 if (retlen) *retlen =
len;
5688 afdi->ulEncodedAssemblyIdentityLength = (id_len - 1) *
sizeof(
WCHAR);
5692 afdi->ulPolicyPathType = ACTIVATION_CONTEXT_PATH_TYPE_NONE;
5693 afdi->ulPolicyPathLength = 0;
5695 afdi->ulMetadataSatelliteRosterIndex = 0;
5696 afdi->ulManifestVersionMajor = 1;
5697 afdi->ulManifestVersionMinor = 0;
5698 afdi->ulPolicyVersionMajor = 0;
5699 afdi->ulPolicyVersionMinor = 0;
5700 afdi->ulAssemblyDirectoryNameLength = ad_len ? (ad_len - 1) *
sizeof(
WCHAR) : 0;
5702 afdi->lpAssemblyEncodedAssemblyIdentity =
ptr;
5707 afdi->lpAssemblyManifestPath =
ptr;
5710 }
else afdi->lpAssemblyManifestPath =
NULL;
5711 afdi->lpAssemblyPolicyPath =
NULL;
5714 afdi->lpAssemblyDirectoryName =
ptr;
5717 else afdi->lpAssemblyDirectoryName =
NULL;
5722 case FileInformationInAssemblyOfAssemblyInActivationContext:
5724 const ACTIVATION_CONTEXT_QUERY_INDEX *acqi = subinst;
5725 ASSEMBLY_FILE_DETAILED_INFORMATION *afdi =
buffer;
5734 if (acqi->ulAssemblyIndex >=
actctx->num_assemblies)
5743 len =
sizeof(*afdi) + dll_len *
sizeof(
WCHAR);
5747 if (retlen) *retlen =
len;
5750 if (retlen) *retlen = 0;
5751 afdi->ulFlags = ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION;
5752 afdi->ulFilenameLength = dll_len ? (dll_len - 1) *
sizeof(
WCHAR) : 0;
5753 afdi->ulPathLength = 0;
5757 afdi->lpFileName =
ptr;
5759 }
else afdi->lpFileName =
NULL;
5760 afdi->lpFilePath =
NULL;
5764 case CompatibilityInformationInActivationContext:
5767 COMPATIBILITY_CONTEXT_ELEMENT *elements;
5780 if (retlen) *retlen =
len;
5784 elements = (COMPATIBILITY_CONTEXT_ELEMENT*)(acci + 1);
5792 case RunlevelInformationInActivationContext:
5794 ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION *acrli =
buffer;
5800 len =
sizeof(*acrli);
5801 if (retlen) *retlen =
len;
5814 FIXME(
"class %u not implemented\n",
class );
5823RtlQueryInformationActiveActivationContext(
ULONG ulInfoClass,
5834 pcbWrittenOrRequired);
5837#define FIND_ACTCTX_RETURN_FLAGS 0x00000002
5838#define FIND_ACTCTX_RETURN_ASSEMBLY_METADATA 0x00000004
5839#define FIND_ACTCTX_VALID_MASK (FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX | FIND_ACTCTX_RETURN_FLAGS | FIND_ACTCTX_RETURN_ASSEMBLY_METADATA)
5847 if (!section_name || !section_name->
Buffer ||
5848 (
flags & ~FIND_ACTCTX_VALID_MASK) ||
5849 ((
flags & FIND_ACTCTX_VALID_MASK) && !
data) ||
5850 (
data &&
data->cbSize <
offsetof(ACTCTX_SECTION_KEYED_DATA, ulAssemblyRosterIndex)))
5852 DPRINT1(
"invalid parameter\n");
5857 if (
flags & FIND_ACTCTX_RETURN_FLAGS ||
5858 flags & FIND_ACTCTX_RETURN_ASSEMBLY_METADATA)
5884 status = RtlpFindActivationContextSection_CheckParameters(
flags,
guid, section_kind, section_name,
data);
5887 DPRINT1(
"RtlFindActivationContextSectionString() failed with status %x\n",
status);
5897 DPRINT(
"RtlFindActivationContextSectionString() failed with status %x\n",
status);
5903 FIXME(
"expected guid == NULL\n");
5906 if (
flags & ~FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX)
5911 if ((
data &&
data->cbSize <
offsetof(ACTCTX_SECTION_KEYED_DATA, ulAssemblyRosterIndex)) ||
5912 !section_name || !section_name->
Buffer)
5914 WARN(
"invalid parameter\n");
5922 DPRINT(
"ActiveFrame: %p\n",
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame);
5923 if (
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame)
5936 DPRINT(
"RtlFindActivationContextSectionString() returns status %x\n",
status);
5949 ACTCTX_SECTION_KEYED_DATA *
data =
ptr;
5956 FIXME(
"expected extguid == NULL\n");
5960 if (
flags & ~FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX)
5969 if (
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame)
6016 if (written) *written =
wcslen(
res) + 1;
6042 ContextStack->
Flags = 0;
6048 *
Stack = ContextStack;
6055RtlActivateActivationContextUnsafeFast(
IN PRTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED Frame,
6062 ActiveFrame =
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame;
6064 DPRINT(
"ActiveSP %p: ACTIVATE (ActiveFrame %p -> NewFrame %p, Context %p)\n",
6065 NtCurrentTeb()->ActivationContextStackPointer, ActiveFrame,
6070 ASSERT(Frame->Size >=
sizeof(RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_BASIC));
6073 if (Frame->Size >=
sizeof(RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED))
6094 NewFrame = &Frame->Frame;
6097 Frame->Frame.
Previous = ActiveFrame;
6106 DPRINT(
"Setting new active frame %p instead of old %p\n", NewFrame, ActiveFrame);
6107 NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame = NewFrame;
6112 DPRINT(
"Trying to activate already activated activation context\n");
6116 if (!RtlpNotAllowingMultipleActivation)
6119 NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame = NewFrame;
6123 NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame = NewFrame;
6132RtlDeactivateActivationContextUnsafeFast(
IN PRTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED Frame)
6136 ActiveFrame =
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame;
6140 ASSERT(Frame->Size >=
sizeof(RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_BASIC));
6148 if (Frame->Size >=
sizeof(RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED))
6163 DPRINT1(
"Deactivating not really activated activation context\n");
6165 return &Frame->Frame;
6169 NewFrame = &Frame->Frame;
6170 if (ActiveFrame != NewFrame)
6172 DPRINT1(
"Deactivating wrong active frame: %p != %p\n", ActiveFrame, NewFrame);
6175 DPRINT(
"ActiveSP %p: DEACTIVATE (ActiveFrame %p -> PreviousFrame %p)\n",
6195 __wine_dbch_actctx.flags = 0x03;
6203 ctx.cbSize =
sizeof(
ctx);
6218 DPRINT1(
"Failed to create the implicit act ctx. Status: 0x%x!!!\n",
Status);
NTSTATUS NTAPI NtUnmapViewOfSection(IN HANDLE ProcessHandle, IN PVOID BaseAddress)
NTSTATUS NTAPI NtCreateSection(OUT PHANDLE SectionHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN PLARGE_INTEGER MaximumSize OPTIONAL, IN ULONG SectionPageProtection OPTIONAL, IN ULONG AllocationAttributes, IN HANDLE FileHandle OPTIONAL)
NTSTATUS NTAPI NtMapViewOfSection(IN HANDLE SectionHandle, IN HANDLE ProcessHandle, IN OUT PVOID *BaseAddress, IN ULONG_PTR ZeroBits, IN SIZE_T CommitSize, IN OUT PLARGE_INTEGER SectionOffset OPTIONAL, IN OUT PSIZE_T ViewSize, IN SECTION_INHERIT InheritDisposition, IN ULONG AllocationType, IN ULONG Protect)
static UCHAR NotificationContext
struct mke2fs_defaults settings[]
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static const WCHAR nameW[]
#define FILE_DIRECTORY_FILE
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define STATUS_NOT_IMPLEMENTED
#define NT_SUCCESS(StatCode)
IMAGE_RESOURCE_DIRECTORY * find_entry_by_name(IMAGE_RESOURCE_DIRECTORY *dir, LPCWSTR name, void *root, int want_dir)
IMAGE_RESOURCE_DIRECTORY * find_first_entry(IMAGE_RESOURCE_DIRECTORY *dir, void *root, int want_dir)
static const WCHAR quote[]
static WCHAR unknown[MAX_STRING_RESOURCE_LEN]
const char * wine_dbg_sprintf(const char *format,...)
#define INVALID_HANDLE_VALUE
#define GetCurrentProcess()
#define RtlImageDirectoryEntryToData
#define __EXCEPT_PAGE_FAULT
static const WCHAR version[]
static const WCHAR versionW[]
static const WCHAR archW[]
#define IsListEmpty(ListHead)
NTSTATUS RtlUpcaseUnicodeString(PUNICODE_STRING dst, PUNICODE_STRING src, BOOLEAN Alloc)
#define InitializeListHead(ListHead)
static unsigned char buff[32768]
@ FileEndOfFileInformation
@ FileBothDirectoryInformation
#define FILE_SYNCHRONOUS_IO_NONALERT
#define FILE_SYNCHRONOUS_IO_ALERT
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble GLdouble top
GLenum GLuint GLenum GLsizei const GLchar * buf
GLenum GLenum GLenum GLenum mapping
GLenum GLuint GLsizei bufsize
GLfloat GLfloat GLfloat GLfloat h
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
_Check_return_ unsigned long __cdecl wcstoul(_In_z_ const wchar_t *_Str, _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr, _In_ int _Radix)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define OBJ_CASE_INSENSITIVE
NTSYSAPI NTSTATUS WINAPI RtlActivateActivationContext(DWORD, HANDLE, ULONG_PTR *)
NTSYSAPI NTSTATUS WINAPI RtlFindActivationContextSectionString(ULONG, const GUID *, ULONG, const UNICODE_STRING *, PVOID)
NTSYSAPI NTSTATUS WINAPI RtlZombifyActivationContext(HANDLE)
NTSYSAPI PVOID WINAPI RtlReAllocateHeap(HANDLE, ULONG, PVOID, SIZE_T)
NTSYSAPI NTSTATUS WINAPI RtlGUIDFromString(PUNICODE_STRING, GUID *)
NTSYSAPI void WINAPI RtlAddRefActivationContext(HANDLE)
NTSYSAPI void WINAPI RtlDeactivateActivationContext(DWORD, ULONG_PTR)
NTSYSAPI void WINAPI RtlReleaseActivationContext(HANDLE)
NTSYSAPI NTSTATUS WINAPI RtlCreateActivationContext(HANDLE *, const void *)
NTSYSAPI NTSTATUS WINAPI RtlGetActiveActivationContext(HANDLE *)
NTSYSAPI NTSTATUS WINAPI RtlQueryInformationActivationContext(ULONG, HANDLE, PVOID, ULONG, PVOID, SIZE_T, SIZE_T *)
#define InterlockedCompareExchangePointer
NTSTATUS NTAPI NtQueryDirectoryFile(IN HANDLE FileHandle, IN HANDLE EventHandle OPTIONAL, IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, IN PVOID ApcContext OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, OUT PVOID FileInformation, IN ULONG Length, IN FILE_INFORMATION_CLASS FileInformationClass, IN BOOLEAN ReturnSingleEntry, IN PUNICODE_STRING FileName OPTIONAL, IN BOOLEAN RestartScan)
static const WCHAR falseW[]
static const WCHAR trueW[]
VOID NTAPI LdrpInitializeProcessCompat(PVOID pProcessActctx, PVOID *pOldShimData)
NTSTATUS NTAPI RtlpInitializeActCtx(PVOID *pOldShimData)
NTSTATUS NTAPI LdrUnlockLoaderLock(_In_ ULONG Flags, _In_opt_ ULONG_PTR Cookie)
NTSTATUS NTAPI LdrLockLoaderLock(_In_ ULONG Flags, _Out_opt_ PULONG Disposition, _Out_opt_ PULONG_PTR Cookie)
NTSTATUS NTAPI LdrFindEntryForAddress(_In_ PVOID Address, _Out_ PLDR_DATA_TABLE_ENTRY *Module)
NTSTATUS NTAPI LdrAccessResource(_In_ PVOID BaseAddress, _In_ PIMAGE_RESOURCE_DATA_ENTRY ResourceDataEntry, _Out_opt_ PVOID *Resource, _Out_opt_ PULONG Size)
NTSTATUS NTAPI LdrFindResource_U(_In_ PVOID BaseAddress, _In_ PLDR_RESOURCE_INFO ResourceInfo, _In_ ULONG Level, _Out_ PIMAGE_RESOURCE_DATA_ENTRY *ResourceDataEntry)
_In_ PCWSTR _Out_ PVOID * ActCtx
#define memcpy(s1, s2, n)
int _swprintf(wchar_t *buffer, const wchar_t *format,...)
static const GUID PACTCTX_SECTION_KEYED_DATA
@ ThreadingModel_Apartment
static HANDLE PIO_APC_ROUTINE PVOID PIO_STATUS_BLOCK io
#define HASH_STRING_ALGORITHM_X65599
static const WCHAR progidW[]
NTSYSAPI ULONG NTAPI RtlUniform(_In_ PULONG Seed)
NTSYSAPI NTSTATUS NTAPI RtlFindActivationContextSectionGuid(ULONG flags, const GUID *extguid, ULONG section_kind, const GUID *guid, void *ptr)
NTSYSAPI NTSTATUS NTAPI RtlHashUnicodeString(_In_ CONST UNICODE_STRING *String, _In_ BOOLEAN CaseInSensitive, _In_ ULONG HashAlgorithm, _Out_ PULONG HashValue)
NTSYSAPI BOOLEAN NTAPI RtlIsTextUnicode(_In_ CONST VOID *Buffer, _In_ INT Size, _Inout_opt_ INT *Flags)
NTSYSAPI RTL_PATH_TYPE NTAPI RtlDetermineDosPathNameType_U(_In_ PCWSTR Path)
_Must_inspect_result_ NTSYSAPI LONG NTAPI RtlCompareUnicodeStrings(_In_reads_(String1Length) PCWCH String1, _In_ SIZE_T String1Length, _In_reads_(String2Length) PCWCH String2, _In_ SIZE_T String2Length, _In_ BOOLEAN CaseInSensitive)
DECLSPEC_NORETURN NTSYSAPI VOID NTAPI RtlRaiseStatus(_In_ NTSTATUS Status)
NTSYSAPI ULONG NTAPI RtlGetFullPathName_U(_In_ PCWSTR FileName, _In_ ULONG Size, _Out_z_bytecap_(Size) PWSTR Buffer, _Out_opt_ PWSTR *ShortName)
NTSYSAPI SIZE_T NTAPI RtlSizeHeap(_In_ PVOID HeapHandle, _In_ ULONG Flags, _In_ PVOID MemoryPointer)
NTSYSAPI BOOLEAN NTAPI RtlDosPathNameToNtPathName_U(_In_opt_z_ PCWSTR DosPathName, _Out_ PUNICODE_STRING NtPathName, _Out_opt_ PCWSTR *NtFileNamePart, _Out_opt_ PRTL_RELATIVE_NAME_U DirectoryInfo)
#define RTL_ACTIVATION_CONTEXT_STACK_FRAME_FLAG_NOT_REALLY_ACTIVATED
#define RTL_ACTIVATION_CONTEXT_STACK_FRAME_FLAG_ACTIVATED
#define RTL_QUERY_ACTIVATION_CONTEXT_FLAG_IS_ADDRESS
#define RTL_QUERY_ACTIVATION_CONTEXT_FLAG_IS_HMODULE
#define RTL_DEACTIVATE_ACTIVATION_CONTEXT_FLAG_FORCE_EARLY_DEACTIVATION
#define RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_FORMAT_WHISTLER
#define RTL_ACTIVATION_CONTEXT_STACK_FRAME_FLAG_DEACTIVATED
#define RTL_QUERY_ACTIVATION_CONTEXT_FLAG_NO_ADDREF
#define RTL_ACTIVATION_CONTEXT_STACK_FRAME_FLAG_HEAP_ALLOCATED
#define RTL_QUERY_ACTIVATION_CONTEXT_FLAG_USE_ACTIVE_ACTIVATION_CONTEXT
NTSYSAPI NTSTATUS NTAPI NtOpenFile(OUT PHANDLE phFile, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN ULONG ShareMode, IN ULONG OpenMode)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
NTSYSAPI BOOLEAN NTAPI RtlEqualUnicodeString(PUNICODE_STRING String1, PUNICODE_STRING String2, BOOLEAN CaseInSensitive)
NTSYSAPI NTSTATUS NTAPI NtQueryInformationFile(IN HANDLE hFile, OUT PIO_STATUS_BLOCK pIoStatusBlock, OUT PVOID FileInformationBuffer, IN ULONG FileInformationBufferLength, IN FILE_INFORMATION_CLASS FileInfoClass)
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToInteger(PUNICODE_STRING String, ULONG Base, PULONG Value)
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
#define STANDARD_RIGHTS_REQUIRED
#define STATUS_SXS_CANT_GEN_ACTCTX
#define STATUS_INVALID_IMAGE_FORMAT
#define STATUS_SXS_ASSEMBLY_NOT_FOUND
#define STATUS_DLL_NOT_FOUND
#define STATUS_SXS_EARLY_DEACTIVATION
#define STATUS_SXS_INVALID_DEACTIVATION
#define STATUS_RESOURCE_TYPE_NOT_FOUND
#define STATUS_SXS_SECTION_NOT_FOUND
#define STATUS_RESOURCE_DATA_NOT_FOUND
#define STATUS_SXS_KEY_NOT_FOUND
NTSTRSAFEAPI RtlStringCchCopyW(_Out_writes_(cchDest) _Always_(_Post_z_) NTSTRSAFE_PWSTR pszDest, _In_ size_t cchDest, _In_ NTSTRSAFE_PCWSTR pszSrc)
NTSTRSAFEAPI RtlStringCchCatW(_Inout_updates_(cchDest) _Always_(_Post_z_) NTSTRSAFE_PWSTR pszDest, _In_ size_t cchDest, _In_ NTSTRSAFE_PCWSTR pszSrc)
#define IMAGE_DIRECTORY_ENTRY_RESOURCE
#define RtlUTF8ToUnicodeN
#define offsetof(TYPE, MEMBER)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
_Check_return_ _CRTIMP int __cdecl wcsncmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
static void read_xml_elem(xmlbuf_t *xmlbuf, struct xml_elem *elem)
#define ACTCTX_FAKE_HANDLE
static const WCHAR autoElevateW[]
static void write_progid_record(struct strsection_header *section, const WCHAR *progid, const GUID *alias, struct string_index **index, ULONG *data_offset, ULONG *global_offset, ULONG rosterindex)
static const WCHAR yesW[]
static struct comclassredirect_data * get_comclass_data(ACTIVATION_CONTEXT *actctx, struct guid_index *index)
static void parse_noinheritable_elem(xmlbuf_t *xmlbuf, const struct xml_elem *parent)
static const WCHAR fileW[]
static NTSTATUS open_nt_file(HANDLE *handle, UNICODE_STRING *name)
static const WCHAR alignableW[]
@ ASSEMBLY_SHARED_MANIFEST
static const WCHAR longPathAwareW[]
static const xmlstr_t empty_xmlstr
static BOOL isxmlspace(WCHAR ch)
static BOOL next_xml_attr(xmlbuf_t *xmlbuf, struct xml_attr *attr, BOOL *end)
static void push_xmlns(xmlbuf_t *xmlbuf, const struct xml_attr *attr)
static const WCHAR processorArchitectureW[]
static NTSTATUS add_comserver_record(const struct guidsection_header *section, const struct entity_array *entities, const struct dll_redirect *dll, struct guid_index **index, ULONG *data_offset, ULONG *module_offset, ULONG *seed, ULONG rosterindex)
static ACTIVATION_CONTEXT * implicit_actctx
static const WCHAR trustInfoW[]
static WCHAR * build_assembly_dir(struct assembly_identity *ai)
static const WCHAR languageW[]
static NTSTATUS get_manifest_in_module(struct actctx_loader *acl, struct assembly_identity *ai, LPCWSTR filename, LPCWSTR directory, BOOL shared, HANDLE hModule, LPCWSTR resname, ULONG lang)
static const WCHAR gdiScalingW[]
enum tagLIBFLAGS LIBFLAGS
static const WCHAR miscstatusdocprintW[]
static void parse_expect_end_elem(xmlbuf_t *xmlbuf, const struct xml_elem *parent)
static NTSTATUS get_manifest_in_associated_manifest(struct actctx_loader *acl, struct assembly_identity *ai, LPCWSTR filename, LPCWSTR directory, HMODULE module, LPCWSTR resname)
static const WCHAR dpiAwarenessW[]
static BOOL xml_name_cmp(const struct xml_elem *elem1, const struct xml_elem *elem2)
static const WCHAR nouiactivateW[]
static NTSTATUS add_ifaceps_record(struct guidsection_header *section, struct entity_array *entities, struct guid_index **index, ULONG *data_offset, ULONG rosterindex)
static const WCHAR supportedOSW[]
static WCHAR * lookup_manifest_file(HANDLE dir, struct assembly_identity *ai)
static const WCHAR hasdiskimageW[]
static const WCHAR proxyStubClsid32W[]
static const WCHAR assemblyW[]
static const WCHAR asmv2W[]
static void parse_binding_redirect_elem(xmlbuf_t *xmlbuf, const struct xml_elem *parent)
static DWORD parse_com_class_misc(const xmlstr_t *value)
static const WCHAR noInheritW[]
static int aligned_string_len(int len)
static const WCHAR supportsmultilevelundoW[]
static const WCHAR current_archW[]
static const WCHAR newVersionW[]
static struct wndclass_redirect_data * get_wndclass_data(ACTIVATION_CONTEXT *ctxt, struct string_index *index)
static const WCHAR windowsSettings2011NSW[]
static const WCHAR clrSurrogateW[]
static NTSTATUS build_dllredirect_section(ACTIVATION_CONTEXT *actctx, struct strsection_header **section)
static const WCHAR asmv3W[]
static struct tlibredirect_data * get_tlib_data(ACTIVATION_CONTEXT *actctx, struct guid_index *index)
static const WCHAR comInterfaceProxyStubW[]
static const WCHAR windowsSettingsW[]
static const WCHAR typeW[]
static const WCHAR activatewhenvisibleW[]
static void parse_noinherit_elem(xmlbuf_t *xmlbuf, const struct xml_elem *parent)
static const WCHAR dotManifestW[]
static struct dllredirect_data * get_dllredirect_data(ACTIVATION_CONTEXT *ctxt, struct string_index *index)
static BOOL parse_text_content(xmlbuf_t *xmlbuf, xmlstr_t *content)
static OLEMISC get_olemisc_value(const WCHAR *str, int len)
struct _ACTIVATION_CONTEXT ACTIVATION_CONTEXT
static const WCHAR restrictedW[]
static const WCHAR actslikelabelW[]
static const WCHAR optionalW[]
static const WCHAR printerDriverIsolationW[]
static NTSTATUS find_cominterface_redirection(ACTIVATION_CONTEXT *actctx, const GUID *guid, ACTCTX_SECTION_KEYED_DATA *data)
static NTSTATUS lookup_winsxs(struct actctx_loader *acl, struct assembly_identity *ai)
static const WCHAR runtimeVersionW[]
static const WCHAR applicationW[]
static struct progidredirect_data * get_progid_data(ACTIVATION_CONTEXT *actctx, const struct string_index *index)
static void get_ifaceps_datalen(const struct entity_array *entities, unsigned int *count, unsigned int *len)
static NTSTATUS get_manifest_in_pe_file(struct actctx_loader *acl, struct assembly_identity *ai, LPCWSTR filename, LPCWSTR directory, BOOL shared, HANDLE file, LPCWSTR resname, ULONG lang)
static const WCHAR publicKeyTokenW[]
static const WCHAR insideoutW[]
static struct entity * add_entity(struct entity_array *array, DWORD kind)
static const WCHAR comInterfaceExternalProxyStubW[]
static void parse_com_class_elem(xmlbuf_t *xmlbuf, struct dll_redirect *dll, struct actctx_loader *acl, const struct xml_elem *parent)
static void parse_assembly_elem(xmlbuf_t *xmlbuf, struct assembly *assembly, struct actctx_loader *acl, const struct xml_elem *parent, struct assembly_identity *expected_ai)
static struct string_index * find_string_index(const struct strsection_header *section, const UNICODE_STRING *name)
static const WCHAR iidW[]
static const WCHAR threadingmodelW[]
static void free_depend_manifests(struct actctx_loader *acl)
static const WCHAR requestedExecutionLevelW[]
static WCHAR * xmlstrdupW(const xmlstr_t *str)
static BOOL is_xmlns_attr(const struct xml_attr *attr)
static ACTIVATION_CONTEXT system_actctx
static const WCHAR miscstatusW[]
static WCHAR * strdupW(const WCHAR *str)
static const WCHAR ultraHighResolutionScrollingAwareW[]
static ACTIVATION_CONTEXT * process_actctx
static NTSTATUS parse_depend_manifests(struct actctx_loader *acl)
static const WCHAR controlW[]
static void parse_typelib_elem(xmlbuf_t *xmlbuf, struct dll_redirect *dll, struct actctx_loader *acl, const struct xml_elem *parent)
static WCHAR * build_assembly_id(const struct assembly_identity *ai)
static void parse_requested_execution_level_elem(xmlbuf_t *xmlbuf, struct assembly *assembly, struct actctx_loader *acl, const struct xml_elem *parent)
static void parse_compatibility_application_elem(xmlbuf_t *xmlbuf, struct assembly *assembly, struct actctx_loader *acl, const struct xml_elem *parent)
static const WCHAR disableWindowFilteringW[]
static const WCHAR assemblyIdentityW[]
static NTSTATUS get_module_filename(HMODULE module, UNICODE_STRING *str, unsigned int extra_len)
static void actctx_addref(ACTIVATION_CONTEXT *actctx)
static NTSTATUS find_comserver_redirection(ACTIVATION_CONTEXT *actctx, const GUID *guid, ACTCTX_SECTION_KEYED_DATA *data)
static void parse_add_interface_class(xmlbuf_t *xmlbuf, struct entity_array *entities, struct actctx_loader *acl, WCHAR *clsid)
static const WCHAR compatibilityW[]
static const WCHAR staticW[]
static NTSTATUS build_ifaceps_section(ACTIVATION_CONTEXT *actctx, struct guidsection_header **section)
static const WCHAR asmv1W[]
static const WCHAR cantlinkinsideW[]
static const WCHAR canlinkbyole1W[]
static NTSTATUS get_manifest_in_manifest_file(struct actctx_loader *acl, struct assembly_identity *ai, LPCWSTR filename, LPCWSTR directory, BOOL shared, HANDLE file)
static NTSTATUS build_comserver_section(ACTIVATION_CONTEXT *actctx, struct guidsection_header **section)
static void parse_com_class_progid(xmlbuf_t *xmlbuf, struct entity *entity, const struct xml_elem *parent)
static const WCHAR xmlnsW[]
static const WCHAR miscstatuscontentW[]
static void parse_file_elem(xmlbuf_t *xmlbuf, struct assembly *assembly, struct actctx_loader *acl, const struct xml_elem *parent)
static const WCHAR typelibW[]
static const WCHAR neutralW[]
#define CREATEPROCESS_MANIFEST_RESOURCE_ID
static const WCHAR g_xmlW[]
static NTSTATUS build_wndclass_section(ACTIVATION_CONTEXT *actctx, struct strsection_header **section)
static const WCHAR imemodeW[]
static xmlstr_t find_xmlns(xmlbuf_t *xmlbuf, const xmlstr_t *name)
static const WCHAR actslikebuttonW[]
static void parse_description_elem(xmlbuf_t *xmlbuf, const struct xml_elem *parent)
static void append_string(WCHAR *buffer, const WCHAR *prefix, const WCHAR *str)
void WINAPI RtlFreeThreadActivationContextStack(void)
static const WCHAR securityW[]
static const WCHAR recomposeonresizeW[]
static void parse_settings_elem(xmlbuf_t *xmlbuf, struct assembly *assembly, struct actctx_loader *acl, struct xml_elem *parent)
static BOOL next_xml_elem(xmlbuf_t *xmlbuf, struct xml_elem *elem, const struct xml_elem *parent)
static struct ifacepsredirect_data * get_ifaceps_data(ACTIVATION_CONTEXT *actctx, struct guid_index *index)
static NTSTATUS find_string(ACTIVATION_CONTEXT *actctx, ULONG section_kind, const UNICODE_STRING *section_name, DWORD flags, PACTCTX_SECTION_KEYED_DATA data)
static BOOL xmlstr_cmpi(const xmlstr_t *xmlstr, const WCHAR *str)
static const char * debugstr_xmlstr(const xmlstr_t *str)
static void parse_expect_no_attr(xmlbuf_t *xmlbuf, BOOL *end)
static const struct olemisc_entry olemisc_values[]
NTSTATUS WINAPI RtlQueryActivationContextApplicationSettings(DWORD flags, HANDLE handle, const WCHAR *ns, const WCHAR *settings, WCHAR *buffer, SIZE_T size, SIZE_T *written)
static const WCHAR highResolutionScrollingAwareW[]
static void parse_supportedos_elem(xmlbuf_t *xmlbuf, struct assembly *assembly, struct actctx_loader *acl, const struct xml_elem *parent)
static const WCHAR miscstatusiconW[]
static const WCHAR hashW[]
static const WCHAR bindingRedirectW[]
static const WCHAR comClassW[]
static const WCHAR baseInterfaceW[]
static void parse_application_elem(xmlbuf_t *xmlbuf, struct assembly *assembly, struct actctx_loader *acl, const struct xml_elem *parent)
static NTSTATUS parse_manifest(struct actctx_loader *acl, struct assembly_identity *ai, LPCWSTR filename, HANDLE module, LPCWSTR directory, BOOL shared, const void *buffer, SIZE_T size)
static const WCHAR manifestVersionW[]
static BOOL parse_nummethods(const xmlstr_t *str, struct entity *entity)
static void free_entity_array(struct entity_array *array)
static BOOL add_dependent_assembly_id(struct actctx_loader *acl, struct assembly_identity *ai)
static BOOL parse_typelib_version(const xmlstr_t *str, struct entity *entity)
NTSTATUS WINAPI RtlActivateActivationContextEx(ULONG flags, TEB *teb, HANDLE handle, ULONG_PTR *cookie)
static const WCHAR dpiAwareW[]
static void parse_com_interface_external_proxy_stub_elem(xmlbuf_t *xmlbuf, struct assembly *assembly, struct actctx_loader *acl, const struct xml_elem *parent)
static struct string_index * get_wndclass_first_index(ACTIVATION_CONTEXT *actctx)
static void actctx_release(ACTIVATION_CONTEXT *actctx)
@ OLEMISC_ACTIVATEWHENVISIBLE
@ OLEMISC_RENDERINGISDEVICEINDEPENDENT
@ OLEMISC_WANTSTOMENUMERGE
@ OLEMISC_IGNOREACTIVATEWHENVISIBLE
@ OLEMISC_INSERTNOTREPLACE
@ OLEMISC_SETCLIENTSITEFIRST
@ OLEMISC_SUPPORTSMULTILEVELUNDO
@ OLEMISC_INVISIBLEATRUNTIME
@ OLEMISC_RECOMPOSEONRESIZE
static const WCHAR ignoreactivatewhenvisibleW[]
static void parse_windows_settings_elem(xmlbuf_t *xmlbuf, struct assembly *assembly, struct actctx_loader *acl, const struct xml_elem *parent)
static BOOL com_class_add_progid(const xmlstr_t *progid, struct entity *entity)
static const WCHAR oldVersionW[]
static NTSTATUS find_query_actctx(HANDLE *handle, DWORD flags, ULONG class)
static const WCHAR islinkobjectW[]
static const WCHAR dependencyW[]
static const WCHAR simpleframeW[]
static struct clrsurrogate_data * get_surrogate_data(ACTIVATION_CONTEXT *actctx, const struct guid_index *index)
static const char * debugstr_xml_elem(const struct xml_elem *elem)
static BOOL set_error(xmlbuf_t *xmlbuf)
static BOOL is_matching_string(const WCHAR *str1, const WCHAR *str2)
static const WCHAR wantstomenumergeW[]
static NTSTATUS add_progid_record(ACTIVATION_CONTEXT *actctx, struct strsection_header *section, const struct entity_array *entities, struct string_index **index, ULONG *data_offset, ULONG *global_offset, ULONG rosterindex)
static const WCHAR hiddenW[]
static NTSTATUS build_progid_section(ACTIVATION_CONTEXT *actctx, struct strsection_header **section)
static const WCHAR nummethodsW[]
static void parse_cominterface_proxy_stub_elem(xmlbuf_t *xmlbuf, struct dll_redirect *dll, struct actctx_loader *acl, const struct xml_elem *parent)
static const WCHAR tlbidW[]
static BOOL xml_attr_cmp(const struct xml_attr *attr, const WCHAR *str)
static const WCHAR noInheritableW[]
static void parse_dependent_assembly_elem(xmlbuf_t *xmlbuf, struct actctx_loader *acl, const struct xml_elem *parent, BOOL optional)
static const WCHAR helpdirW[]
static const char * debugstr_version(const struct assembly_version *ver)
static const WCHAR invisibleatruntimeW[]
static const WCHAR mscoree2W[]
static BOOL parse_typelib_flags(const xmlstr_t *value, struct entity *entity)
static NTSTATUS find_clr_surrogate(ACTIVATION_CONTEXT *actctx, const GUID *guid, ACTCTX_SECTION_KEYED_DATA *data)
static const WCHAR disableThemingW[]
static const WCHAR dependentAssemblyW[]
static const WCHAR windowsSettings2017NSW[]
static const WCHAR windowsSettings2016NSW[]
static const WCHAR magicFutureSettingW[]
static const WCHAR windowClassW[]
static const WCHAR * find_app_settings(ACTIVATION_CONTEXT *actctx, const WCHAR *settings, const WCHAR *ns)
static void generate_uuid(ULONG *seed, GUID *guid)
#define GUIDSECTION_MAGIC
static void free_assembly_identity(struct assembly_identity *ai)
static const WCHAR wildcardW[]
static const WCHAR onlyiconicW[]
static BOOL xmlstr_cmp(const xmlstr_t *xmlstr, const WCHAR *str)
static void parse_window_class_elem(xmlbuf_t *xmlbuf, struct dll_redirect *dll, struct actctx_loader *acl, const struct xml_elem *parent)
static NTSTATUS find_progid_redirection(ACTIVATION_CONTEXT *actctx, const UNICODE_STRING *name, PACTCTX_SECTION_KEYED_DATA data)
static void get_comserver_datalen(const struct entity_array *entities, const struct dll_redirect *dll, unsigned int *count, unsigned int *len, unsigned int *module_len)
static struct assembly * add_assembly(ACTIVATION_CONTEXT *actctx, enum assembly_type at)
static PCOMPATIBILITY_CONTEXT_ELEMENT add_compat_context(struct assembly *assembly)
static const WCHAR flagsW[]
static struct guid_index * find_guid_index(const struct guidsection_header *section, const GUID *guid)
static NTSTATUS build_tlib_section(ACTIVATION_CONTEXT *actctx, struct guidsection_header **section)
static NTSTATUS build_clr_surrogate_section(ACTIVATION_CONTEXT *actctx, struct guidsection_header **section)
static const WCHAR clrClassW[]
static const WCHAR requestedPrivilegesW[]
static struct dll_redirect * add_dll_redirect(struct assembly *assembly)
static BOOL parse_version(const xmlstr_t *str, struct assembly_version *version)
static void parse_assembly_identity_elem(xmlbuf_t *xmlbuf, ACTIVATION_CONTEXT *actctx, struct assembly_identity *ai, const struct xml_elem *parent)
static const WCHAR mscoreeW[]
static void parse_unknown_elem(xmlbuf_t *xmlbuf, const struct xml_elem *parent)
static void parse_clr_class_elem(xmlbuf_t *xmlbuf, struct assembly *assembly, struct actctx_loader *acl, const struct xml_elem *parent)
static const WCHAR g_nameW[]
static NTSTATUS find_window_class(ACTIVATION_CONTEXT *actctx, const UNICODE_STRING *name, PACTCTX_SECTION_KEYED_DATA data)
static const WCHAR miscstatusthumbnailW[]
static void parse_compatibility_elem(xmlbuf_t *xmlbuf, struct assembly *assembly, struct actctx_loader *acl, const struct xml_elem *parent)
static void parse_clr_surrogate_elem(xmlbuf_t *xmlbuf, struct assembly *assembly, struct actctx_loader *acl, const struct xml_elem *parent)
static const WCHAR version_formatW[]
static void parse_trust_info_elem(xmlbuf_t *xmlbuf, struct assembly *assembly, struct actctx_loader *acl, const struct xml_elem *parent)
static NTSTATUS find_guid(ACTIVATION_CONTEXT *actctx, ULONG section_kind, const GUID *guid, DWORD flags, PACTCTX_SECTION_KEYED_DATA data)
static ACTIVATION_CONTEXT * check_actctx(HANDLE h)
BOOLEAN WINAPI RtlIsActivationContextActive(HANDLE handle)
static BOOL xml_elem_cmp(const struct xml_elem *elem, const WCHAR *str, const WCHAR *namespace)
static const WCHAR alwaysrunW[]
static int get_assembly_version(struct assembly *assembly, WCHAR *ret)
static const char * debugstr_xml_attr(const struct xml_attr *attr)
static void parse_security_elem(xmlbuf_t *xmlbuf, struct assembly *assembly, struct actctx_loader *acl, const struct xml_elem *parent)
static void parse_dependency_elem(xmlbuf_t *xmlbuf, struct actctx_loader *acl, const struct xml_elem *parent)
static const WCHAR windowsSettings2005NSW[]
static BOOL is_matching_identity(const struct assembly_identity *id1, const struct assembly_identity *id2)
static NTSTATUS lookup_assembly(struct actctx_loader *acl, struct assembly_identity *ai)
static const WCHAR compatibilityNSW[]
static void get_progid_datalen(struct entity_array *entities, unsigned int *count, unsigned int *total_len)
static const WCHAR hashalgW[]
static NTSTATUS find_tlib_redirection(ACTIVATION_CONTEXT *actctx, const GUID *guid, ACTCTX_SECTION_KEYED_DATA *data)
static NTSTATUS find_dll_redirection(ACTIVATION_CONTEXT *actctx, const UNICODE_STRING *name, PACTCTX_SECTION_KEYED_DATA data)
static const WCHAR versionedW[]
static const WCHAR renderingisdeviceindependentW[]
static enum comclass_threadingmodel parse_com_class_threadingmodel(xmlstr_t *value)
static const WCHAR insertnotreplaceW[]
static void parse_requested_privileges_elem(xmlbuf_t *xmlbuf, struct assembly *assembly, struct actctx_loader *acl, const struct xml_elem *parent)
static NTSTATUS parse_manifest_buffer(struct actctx_loader *acl, struct assembly *assembly, struct assembly_identity *ai, xmlbuf_t *xmlbuf)
static const WCHAR descriptionW[]
static const WCHAR clsidW[]
static const WCHAR setclientsitefirstW[]
static BOOL parse_xml_header(xmlbuf_t *xmlbuf)
#define STATUS_BUFFER_TOO_SMALL
PULONG MinorVersion OPTIONAL
LIST_ENTRY FrameListCache
struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME * ActiveFrame
ULONG NextCookieSequenceNumber
struct strsection_header * dllredirect_section
struct guidsection_header * ifaceps_section
struct guidsection_header * comserver_section
struct strsection_header * wndclass_section
struct strsection_header * progid_section
unsigned int allocated_assemblies
struct assembly * assemblies
struct guidsection_header * tlib_section
struct guidsection_header * clrsurrogate_section
unsigned int num_assemblies
PACTIVATION_CONTEXT EntryPointActivationContext
UNICODE_STRING FullDllName
struct _ACTIVATION_CONTEXT * ActivationContext
struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME * Previous
PVOID ActivationContextStackPointer
unsigned int allocated_dependencies
struct assembly_identity * dependencies
unsigned int num_dependencies
ACTIVATION_CONTEXT * actctx
struct assembly_version version
struct dll_redirect * dlls
unsigned int allocated_dlls
struct assembly_identity id
struct file_info manifest
struct entity_array entities
ULONG num_compat_contexts
COMPATIBILITY_CONTEXT_ELEMENT * compat_contexts
ACTCTX_REQUESTED_RUN_LEVEL run_level
DWORD miscstatusthumbnail
struct entity_array entities
struct entity::@5103::@5108 clrsurrogate
struct entity::@5103::@5105 comclass
DWORD miscstatusthumbnail
struct entity::@5103::@5106 ifaceps
struct entity::@5103::@5109 settings
struct entity::@5103::@5104 typelib
struct entity::@5103::@5107 class
struct xml_attr namespaces[MAX_NAMESPACES]
Character const *const prefix
#define FIELD_OFFSET(t, f)
#define STATUS_INVALID_PARAMETER
#define STATUS_NO_SUCH_FILE
static const WCHAR lang[]
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
LPCSTR debugstr_us(const UNICODE_STRING *us)
#define IS_TEXT_UNICODE_REVERSE_SIGNATURE
#define IS_TEXT_UNICODE_SIGNATURE
_Must_inspect_result_ _In_ ULONG Flags
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
#define RtlUshortByteSwap(_x)