24#include <wine/unicode.h>
28#define ACTCTX_FLAGS_ALL (\
29 ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID |\
30 ACTCTX_FLAG_LANGID_VALID |\
31 ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID |\
32 ACTCTX_FLAG_RESOURCE_NAME_VALID |\
33 ACTCTX_FLAG_SET_PROCESS_DEFAULT |\
34 ACTCTX_FLAG_APPLICATION_NAME_VALID |\
35 ACTCTX_FLAG_SOURCE_IS_ASSEMBLYREF |\
36 ACTCTX_FLAG_HMODULE_VALID )
38#define STRSECTION_MAGIC 0x64487353
39#define GUIDSECTION_MAGIC 0x64487347
41#define ACTCTX_MAGIC_MARKER (PVOID)'gMcA'
43#define ACTCTX_FAKE_HANDLE ((HANDLE) 0xf00baa)
44#define ACTCTX_FAKE_COOKIE ((ULONG_PTR) 0xf00bad)
46#define MAX_NAMESPACES 64
549#elif defined __x86_64__
553#elif defined __aarch64__
559static 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};
560static 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};
561static 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};
606 DbgPrint(
"%s : Invalid activation context marker %p found in activation context %p\n"
607 " This means someone stepped on the allocation, or someone is using a\n"
608 " deallocated activation context\n",
618static const WCHAR assemblyIdentityW[] = {
'a',
's',
's',
'e',
'm',
'b',
'l',
'y',
'I',
'd',
'e',
'n',
't',
'i',
't',
'y',0};
619static const WCHAR bindingRedirectW[] = {
'b',
'i',
'n',
'd',
'i',
'n',
'g',
'R',
'e',
'd',
'i',
'r',
'e',
'c',
't',0};
621static const WCHAR clrSurrogateW[] = {
'c',
'l',
'r',
'S',
'u',
'r',
'r',
'o',
'g',
'a',
't',
'e',0};
623static 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};
624static 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};
625static const WCHAR dependencyW[] = {
'd',
'e',
'p',
'e',
'n',
'd',
'e',
'n',
'c',
'y',0};
626static const WCHAR dependentAssemblyW[] = {
'd',
'e',
'p',
'e',
'n',
'd',
'e',
'n',
't',
'A',
's',
's',
'e',
'm',
'b',
'l',
'y',0};
627static const WCHAR descriptionW[] = {
'd',
'e',
's',
'c',
'r',
'i',
'p',
't',
'i',
'o',
'n',0};
631static const WCHAR noInheritableW[] = {
'n',
'o',
'I',
'n',
'h',
'e',
'r',
'i',
't',
'a',
'b',
'l',
'e',0};
633static const WCHAR windowClassW[] = {
'w',
'i',
'n',
'd',
'o',
'w',
'C',
'l',
'a',
's',
's',0};
640static const WCHAR manifestVersionW[] = {
'm',
'a',
'n',
'i',
'f',
'e',
's',
't',
'V',
'e',
'r',
's',
'i',
'o',
'n',0};
643static const WCHAR newVersionW[] = {
'n',
'e',
'w',
'V',
'e',
'r',
's',
'i',
'o',
'n',0};
644static const WCHAR oldVersionW[] = {
'o',
'l',
'd',
'V',
'e',
'r',
's',
'i',
'o',
'n',0};
646static 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};
648static const WCHAR publicKeyTokenW[] = {
'p',
'u',
'b',
'l',
'i',
'c',
'K',
'e',
'y',
'T',
'o',
'k',
'e',
'n',0};
649static const WCHAR threadingmodelW[] = {
't',
'h',
'r',
'e',
'a',
'd',
'i',
'n',
'g',
'M',
'o',
'd',
'e',
'l',0};
657static const WCHAR restrictedW[] = {
'R',
'E',
'S',
'T',
'R',
'I',
'C',
'T',
'E',
'D',0};
660static const WCHAR hasdiskimageW[] = {
'H',
'A',
'S',
'D',
'I',
'S',
'K',
'I',
'M',
'A',
'G',
'E',0};
662static const WCHAR miscstatusW[] = {
'm',
'i',
's',
'c',
'S',
't',
'a',
't',
'u',
's',0};
663static const WCHAR miscstatusiconW[] = {
'm',
'i',
's',
'c',
'S',
't',
'a',
't',
'u',
's',
'I',
'c',
'o',
'n',0};
664static const WCHAR miscstatuscontentW[] = {
'm',
'i',
's',
'c',
'S',
't',
'a',
't',
'u',
's',
'C',
'o',
'n',
't',
'e',
'n',
't',0};
665static const WCHAR miscstatusthumbnailW[] = {
'm',
'i',
's',
'c',
'S',
't',
'a',
't',
'u',
's',
'T',
'h',
'u',
'm',
'b',
'n',
'a',
'i',
'l',0};
666static const WCHAR miscstatusdocprintW[] = {
'm',
'i',
's',
'c',
'S',
't',
'a',
't',
'u',
's',
'D',
'o',
'c',
'P',
'r',
'i',
'n',
't',0};
667static const WCHAR baseInterfaceW[] = {
'b',
'a',
's',
'e',
'I',
'n',
't',
'e',
'r',
'f',
'a',
'c',
'e',0};
668static const WCHAR nummethodsW[] = {
'n',
'u',
'm',
'M',
'e',
't',
'h',
'o',
'd',
's',0};
669static const WCHAR proxyStubClsid32W[] = {
'p',
'r',
'o',
'x',
'y',
'S',
't',
'u',
'b',
'C',
'l',
's',
'i',
'd',
'3',
'2',0};
670static const WCHAR runtimeVersionW[] = {
'r',
'u',
'n',
't',
'i',
'm',
'e',
'V',
'e',
'r',
's',
'i',
'o',
'n',0};
671static const WCHAR mscoreeW[] = {
'M',
'S',
'C',
'O',
'R',
'E',
'E',
'.',
'D',
'L',
'L',0};
672static const WCHAR mscoree2W[] = {
'm',
's',
'c',
'o',
'r',
'e',
'e',
'.',
'd',
'l',
'l',0};
674static const WCHAR activatewhenvisibleW[] = {
'a',
'c',
't',
'i',
'v',
'a',
't',
'e',
'w',
'h',
'e',
'n',
'v',
'i',
's',
'i',
'b',
'l',
'e',0};
675static const WCHAR actslikebuttonW[] = {
'a',
'c',
't',
's',
'l',
'i',
'k',
'e',
'b',
'u',
't',
't',
'o',
'n',0};
676static const WCHAR actslikelabelW[] = {
'a',
'c',
't',
's',
'l',
'i',
'k',
'e',
'l',
'a',
'b',
'e',
'l',0};
679static const WCHAR canlinkbyole1W[] = {
'c',
'a',
'n',
'l',
'i',
'n',
'k',
'b',
'y',
'o',
'l',
'e',
'1',0};
680static const WCHAR cantlinkinsideW[] = {
'c',
'a',
'n',
't',
'l',
'i',
'n',
'k',
'i',
'n',
's',
'i',
'd',
'e',0};
681static 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};
683static const WCHAR insertnotreplaceW[] = {
'i',
'n',
's',
'e',
'r',
't',
'n',
'o',
't',
'r',
'e',
'p',
'l',
'a',
'c',
'e',0};
685static const WCHAR invisibleatruntimeW[] = {
'i',
'n',
'v',
'i',
's',
'i',
'b',
'l',
'e',
'a',
't',
'r',
'u',
'n',
't',
'i',
'm',
'e',0};
686static const WCHAR islinkobjectW[] = {
'i',
's',
'l',
'i',
'n',
'k',
'o',
'b',
'j',
'e',
'c',
't',0};
687static const WCHAR nouiactivateW[] = {
'n',
'o',
'u',
'i',
'a',
'c',
't',
'i',
'v',
'a',
't',
'e',0};
688static const WCHAR onlyiconicW[] = {
'o',
'n',
'l',
'y',
'i',
'c',
'o',
'n',
'i',
'c',0};
689static const WCHAR recomposeonresizeW[] = {
'r',
'e',
'c',
'o',
'm',
'p',
'o',
's',
'e',
'o',
'n',
'r',
'e',
's',
'i',
'z',
'e',0};
690static 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};
691static const WCHAR setclientsitefirstW[] = {
's',
'e',
't',
'c',
'l',
'i',
'e',
'n',
't',
's',
'i',
't',
'e',
'f',
'i',
'r',
's',
't',0};
692static const WCHAR simpleframeW[] = {
's',
'i',
'm',
'p',
'l',
'e',
'f',
'r',
'a',
'm',
'e',0};
694static 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};
695static const WCHAR wantstomenumergeW[] = {
'w',
'a',
'n',
't',
's',
't',
'o',
'm',
'e',
'n',
'u',
'm',
'e',
'r',
'g',
'e',0};
697static const WCHAR compatibilityW[] = {
'c',
'o',
'm',
'p',
'a',
't',
'i',
'b',
'i',
'l',
'i',
't',
'y',0};
698static 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};
699static const WCHAR applicationW[] = {
'a',
'p',
'p',
'l',
'i',
'c',
'a',
't',
'i',
'o',
'n',0};
700static const WCHAR supportedOSW[] = {
's',
'u',
'p',
'p',
'o',
'r',
't',
'e',
'd',
'O',
'S',0};
702static 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};
703static const WCHAR requestedPrivilegesW[] = {
'r',
'e',
'q',
'u',
'e',
's',
't',
'e',
'd',
'P',
'r',
'i',
'v',
'i',
'l',
'e',
'g',
'e',
's',0};
706static const WCHAR windowsSettingsW[] = {
'w',
'i',
'n',
'd',
'o',
'w',
's',
'S',
'e',
't',
't',
'i',
'n',
'g',
's',0};
707static const WCHAR autoElevateW[] = {
'a',
'u',
't',
'o',
'E',
'l',
'e',
'v',
'a',
't',
'e',0};
708static const WCHAR disableThemingW[] = {
'd',
'i',
's',
'a',
'b',
'l',
'e',
'T',
'h',
'e',
'm',
'i',
'n',
'g',0};
709static 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};
710static 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};
711static 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};
712static 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};
713static 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};
715static const WCHAR dpiAwarenessW[] = {
'd',
'p',
'i',
'A',
'w',
'a',
'r',
'e',
'n',
'e',
's',
's',0};
716static const WCHAR gdiScalingW[] = {
'g',
'd',
'i',
'S',
'c',
'a',
'l',
'i',
'n',
'g',0};
717static 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};
718static const WCHAR longPathAwareW[] = {
'l',
'o',
'n',
'g',
'P',
'a',
't',
'h',
'A',
'w',
'a',
'r',
'e',0};
719static const WCHAR magicFutureSettingW[] = {
'm',
'a',
'g',
'i',
'c',
'F',
'u',
't',
'u',
'r',
'e',
'S',
'e',
't',
't',
'i',
'n',
'g',0};
720static 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};
721static 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};
756static const WCHAR manifestv1W[] = {
'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};
757static const WCHAR manifestv2W[] = {
'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};
758static const WCHAR manifestv3W[] = {
'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};
761static const WCHAR version_formatW[] = {
'%',
'u',
'.',
'%',
'u',
'.',
'%',
'u',
'.',
'%',
'u',0};
801 return (xmlstr->
len && xmlstr->
ptr[0] ==
'/' &&
836 return (ch ==
' ' || ch ==
'\r' || ch ==
'\n' || ch ==
'\t');
843 DPRINT(
"add_assembly() actctx %p, activeframe ??\n",
actctx);
845 if (
actctx->num_assemblies ==
actctx->allocated_assemblies)
848 unsigned int new_count;
851 new_count =
actctx->allocated_assemblies * 2;
862 actctx->allocated_assemblies = new_count;
877 unsigned int new_count;
904 new_count *
sizeof(COMPATIBILITY_CONTEXT_ELEMENT) );
931 unsigned int new_count;
934 new_count =
array->allocated * 2;
936 array->base, new_count *
sizeof(*
array->base) );
945 array->allocated = new_count;
960 case ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION:
970 case ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION:
977 case ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION:
981 case ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION:
984 case ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES:
998 if (!str1)
return !str2;
999 return str2 && !
strcmpiW( str1, str2 );
1032 DPRINT(
"reusing existing assembly for %S arch %S version %u.%u.%u.%u\n",
1041 DPRINT(
"reusing existing dependency for %S arch %S version %u.%u.%u.%u\n",
1050 unsigned int new_count;
1081 static const WCHAR undW[] = {
'_',0};
1082 static const WCHAR noneW[] = {
'n',
'o',
'n',
'e',0};
1083 static const WCHAR mskeyW[] = {
'd',
'e',
'a',
'd',
'b',
'e',
'e',
'f',0};
1127 {
',',
'p',
'r',
'o',
'c',
'e',
's',
's',
'o',
'r',
'A',
'r',
'c',
'h',
'i',
't',
'e',
'c',
't',
'u',
'r',
'e',
'=',0};
1128 static const WCHAR public_keyW[] =
1129 {
',',
'p',
'u',
'b',
'l',
'i',
'c',
'K',
'e',
'y',
'T',
'o',
'k',
'e',
'n',
'=',0};
1130 static const WCHAR typeW2[] =
1131 {
',',
't',
'y',
'p',
'e',
'=',0};
1132 static const WCHAR versionW2[] =
1133 {
',',
'v',
'e',
'r',
's',
'i',
'o',
'n',
'=',0};
1174 DPRINT1(
"Invalid activation context handle!\n");
1193 for (
i = 0;
i <
actctx->num_assemblies;
i++)
1266 for (
i = xmlbuf->
ns_pos - 1;
i >= 0;
i--)
1288 if (*xmlbuf->
ptr ==
'/')
1291 if (xmlbuf->
ptr == xmlbuf->
end || *xmlbuf->
ptr !=
'>')
1299 if (*xmlbuf->
ptr ==
'>')
1334 xmlbuf->
ptr = xmlbuf->
end;
1378 for (
ptr = xmlbuf->
ptr; ptr < xmlbuf->
end;
ptr++)
if (*
ptr ==
'<')
break;
1381 xmlbuf->
ptr = xmlbuf->
end;
1385 if (
ptr + 3 < xmlbuf->
end &&
ptr[0] ==
'!' &&
ptr[1] ==
'-' &&
ptr[2] ==
'-')
1388 if (
ptr[0] ==
'-' &&
ptr[1] ==
'-' &&
ptr[2] ==
'>')
break;
1390 if (
ptr + 3 > xmlbuf->
end)
1392 xmlbuf->
ptr = xmlbuf->
end;
1402 if (ptr < xmlbuf->
end && *
ptr ==
'/')
1441 if (
ptr[0] ==
'?' &&
ptr[1] ==
'>')
1465 unsigned int ver[4];
1470 ver[0] = ver[1] = ver[2] = ver[3] =
pos = 0;
1471 for (curr =
str->ptr; curr < str->
ptr +
str->len; curr++)
1473 if (*curr >=
'0' && *curr <=
'9')
1475 ver[
pos] = ver[
pos] * 10 + *curr -
'0';
1476 if (ver[
pos] >= 0x10000)
goto error;
1478 else if (*curr ==
'.')
1568 static const WCHAR apartW[] = {
'A',
'p',
'a',
'r',
't',
'm',
'e',
'n',
't',0};
1569 static const WCHAR neutralW[] = {
'N',
'e',
'u',
't',
'r',
'a',
'l',0};
1570 static const WCHAR freeW[] = {
'F',
'r',
'e',
'e',0};
1571 static const WCHAR bothW[] = {
'B',
'o',
't',
'h',0};
1620 while (i < value->
len)
1649 if (!new_progids)
return FALSE;
1681 if (!(
entity =
add_entity(&
dll->entities, ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)))
1758 for (curr =
str->ptr; curr < str->
ptr +
str->len; curr++)
1760 if (*curr >=
'0' && *curr <=
'9')
1761 num =
num * 10 + *curr -
'0';
1787 if (!(
entity =
add_entity(entities, ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)))
1808 if (!(
entity =
add_entity(&
dll->entities, ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION)))
1865 while (i < value->
len)
1871 *
flags |= LIBFLAG_FRESTRICTED;
1873 *
flags |= LIBFLAG_FCONTROL;
1875 *
flags |= LIBFLAG_FHIDDEN;
1877 *
flags |= LIBFLAG_FHASDISKIMAGE;
1894 unsigned int ver[2];
1899 ver[0] = ver[1] =
pos = 0;
1900 for (curr =
str->ptr; curr < str->
ptr +
str->len; curr++)
1902 if (*curr >=
'0' && *curr <=
'9')
1904 ver[
pos] = ver[
pos] * 10 + *curr -
'0';
1905 if (ver[
pos] >= 0x10000)
goto error;
1907 else if (*curr ==
'.')
1928 if (!(
entity =
add_entity(&
dll->entities, ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION)))
1960 return (
len + 3) & ~3;
1965 static const WCHAR fmtW[] = {
'%',
'u',
'.',
'%',
'u',
'.',
'%',
'u',
'.',
'%',
'u',0};
1982 if (!(
entity =
add_entity(&
dll->entities, ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION)))
2204 memset(&ai, 0,
sizeof(ai));
2209 static const WCHAR allowDelayedBindingW[] = {
'a',
'l',
'l',
'o',
'w',
'D',
'e',
'l',
'a',
'y',
'e',
'd',
'B',
'i',
'n',
'd',
'i',
'n',
'g',0};
2210 static const WCHAR trueW[] = {
't',
'r',
'u',
'e',0};
2309 static const WCHAR sha1W[] = {
'S',
'H',
'A',
'1',0};
2361 COMPATIBILITY_CONTEXT_ELEMENT *compat;
2374 compat->Type = ACTCTX_COMPATIBILITY_ELEMENT_TYPE_OS;
2375 compat->Id = compat_id;
2501 static const WCHAR levelW[] = {
'l',
'e',
'v',
'e',
'l',0};
2502 static const WCHAR asInvokerW[] = {
'a',
's',
'I',
'n',
'v',
'o',
'k',
'e',
'r',0};
2503 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};
2504 static const WCHAR highestAvailableW[] = {
'h',
'i',
'g',
'h',
'e',
's',
't',
'A',
'v',
'a',
'i',
'l',
'a',
'b',
'l',
'e',0};
2505 static const WCHAR uiAccessW[] = {
'u',
'i',
'A',
'c',
'c',
'e',
's',
's',0};
2506 static const WCHAR falseW[] = {
'f',
'a',
'l',
's',
'e',0};
2507 static const WCHAR trueW[] = {
't',
'r',
'u',
'e',0};
2610 static const WCHAR v10W[] = {
'1',
'.',
'0',0};
2668 if (!xmlbuf->
error && expected_ai)
2739 if (xmlbuf->
ptr != xmlbuf->
end)
2765 : ACTIVATION_CONTEXT_PATH_TYPE_NONE;
2784 xmlbuf.
ptr = new_buff;
2798 DPRINT1(
"RtlMultiByteToUnicodeSize failed with %lx\n",
status);
2809 DPRINT1(
"RtlMultiByteToUnicodeN failed with %lx\n",
status);
2813 xmlbuf.
ptr = new_buff;
2827 attr.RootDirectory = 0;
2831 attr.SecurityQualityOfService =
NULL;
2895 else if (resname[0] ==
'#')
2925 void *
root,
int want_dir );
2929 void *
root,
int want_dir )
2934 for (
pos =
dir->NumberOfNamedEntries; pos < dir->NumberOfNamedEntries +
dir->NumberOfIdEntries;
pos++)
2936 if (!
entry[
pos].DataIsDirectory == !want_dir)
2990 WCHAR resnameBuf[20];
2996 resptr = resnameBuf;
3002 attr.RootDirectory = 0;
3006 attr.SecurityQualityOfService =
NULL;
3051 attr.RootDirectory = 0;
3055 attr.SecurityQualityOfService =
NULL;
3085 static const WCHAR fmtW[] = {
'.',
'%',
'l',
'u',0 };
3094 DPRINT(
"looking for manifest associated with %S id %lu\n",
filename, resid );
3133 static const WCHAR lookup_fmtW[] =
3134 {
'%',
's',
'_',
'%',
's',
'_',
'%',
's',
'_',
'%',
'u',
'.',
'%',
'u',
'.',
'*',
'.',
'*',
'_',
3135 '%',
's',
'_',
'*',
'.',
'm',
'a',
'n',
'i',
'f',
'e',
's',
't',0};
3136 static const WCHAR wine_trailerW[] = {
'd',
'e',
'a',
'd',
'b',
'e',
'e',
'f',
'.',
'm',
'a',
'n',
'i',
'f',
'e',
's',
't'};
3142 unsigned int data_pos = 0, data_len;
3148 +
sizeof(lookup_fmtW) )))
3162 ULONG build, revision;
3164 data_len = (
ULONG)
io.Information;
3168 if (data_pos >= data_len)
3173 data_len = (
ULONG)
io.Information;
3179 else data_pos = data_len;
3183 if (build < min_build)
continue;
3185 revision =
atoiW(tmp);
3186 if (build == min_build && revision < min_revision)
continue;
3190 !
memicmpW( tmp, wine_trailerW,
sizeof(wine_trailerW) /
sizeof(
WCHAR) ))
3199 min_revision = revision;
3202 ai->
version.revision = revision;
3225 static const WCHAR manifest_dirW[] =
3226 {
'\\',
'w',
'i',
'n',
's',
'x',
's',
'\\',
'm',
'a',
'n',
'i',
'f',
'e',
's',
't',
's',0};
3245 attr.RootDirectory = 0;
3247 attr.ObjectName = &path_us;
3249 attr.SecurityQualityOfService =
NULL;
3273 path[path_us.Length/
sizeof(
WCHAR)] =
'\\';
3293 static const WCHAR dotDllW[] = {
'.',
'd',
'l',
'l',0};
3301 DPRINT(
"looking for name=%S version=%u.%u.%u.%u arch=%S\n",
3332 for (
i = 0;
i < 4;
i++)
3390 DPRINT1(
"Could not find dependent assembly %S (%u.%u.%u.%u)\n",
3411 if (
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame)
3412 *
handle =
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame->ActivationContext;
3432 else if (!*
handle && (
class != ActivationContextBasicInformation))
3449 for (
i = 0;
i <
actctx->num_assemblies;
i++)
3457 total_len +=
sizeof(*index);
3458 total_len +=
sizeof(*data);
3467 total_len +=
sizeof(*header);
3474 header->size =
sizeof(*header);
3476 header->index_offset =
sizeof(*header);
3480 for (
i = 0;
i <
actctx->num_assemblies;
i++)
3500 index->name_offset = name_offset;
3503 index->data_len =
sizeof(*data);
3504 index->rosterindex =
i + 1;
3508 data->size =
sizeof(*data);
3594 DPRINT(
"actctx->dllredirect_section: %p\n",
actctx->dllredirect_section);
3595 if (!
actctx->dllredirect_section)
3614 data->ulDataFormatVersion = 1;
3618 data->ulSectionGlobalDataLength = 0;
3619 data->lpSectionBase =
actctx->dllredirect_section;
3624 data->ulAssemblyRosterIndex =
index->rosterindex;
3642 unsigned int i,
j,
k, total_len = 0, class_count = 0;
3649 for (
i = 0;
i <
actctx->num_assemblies;
i++)
3655 for (
k = 0;
k <
dll->entities.num;
k++)
3658 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION)
3664 total_len +=
sizeof(*index);
3665 total_len +=
sizeof(*data);
3682 total_len +=
sizeof(*header);
3689 header->size =
sizeof(*header);
3690 header->count = class_count;
3691 header->index_offset =
sizeof(*header);
3695 for (
i = 0;
i <
actctx->num_assemblies;
i++)
3701 for (
k = 0;
k <
dll->entities.num;
k++)
3704 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION)
3706 static const WCHAR exclW[] = {
'!',0};
3707 ULONG versioned_len, module_len;
3722 versioned_len =
str.Length;
3725 index->name_offset = name_offset;
3728 index->data_len =
sizeof(*data) + versioned_len + module_len + 2*
sizeof(
WCHAR) ;
3729 index->rosterindex =
i + 1;
3733 data->size =
sizeof(*data);
3735 data->name_len = versioned_len;
3736 data->name_offset =
sizeof(*data);
3748 ptrW[
data->module_len/
sizeof(
WCHAR)] = 0;
3788 if (!
actctx->wndclass_section)
3803 for (
i = 0;
i <
actctx->wndclass_section->count;
i++)
3826 data->ulDataFormatVersion = 1;
3827 data->lpData =
class;
3829 data->ulLength =
class->size +
class->name_len +
class->module_len + 2*
sizeof(
WCHAR);
3831 data->ulSectionGlobalDataLength = 0;
3832 data->lpSectionBase =
actctx->wndclass_section;
3837 data->ulAssemblyRosterIndex =
index->rosterindex;
3848 unsigned int i,
j,
k, total_len = 0, tlib_count = 0, names_len = 0;
3850 ULONG module_offset, data_offset;
3855 for (
i = 0;
i <
actctx->num_assemblies;
i++)
3861 for (
k = 0;
k <
dll->entities.num;
k++)
3864 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION)
3867 total_len +=
sizeof(*index);
3868 total_len +=
sizeof(*data);
3883 total_len +=
sizeof(*header);
3890 header->size =
sizeof(*header);
3891 header->count = tlib_count;
3894 module_offset =
sizeof(*header);
3897 for (
i = 0;
i <
actctx->num_assemblies;
i++)
3903 for (
k = 0;
k <
dll->entities.num;
k++)
3906 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION)
3908 ULONG module_len, help_len;
3928 index->data_offset = data_offset;
3930 index->rosterindex =
i + 1;
3934 data->size =
sizeof(*data);
3936 data->name_len = module_len;
3937 data->name_offset = module_offset;
3942 data->help_offset =
sizeof(*data);
3959 data_offset +=
sizeof(*data);
3963 module_offset += module_len +
sizeof(
WCHAR);
3988 if (!
actctx->tlib_section)
4004 data->ulDataFormatVersion = 1;
4005 data->lpData = tlib;
4009 data->ulSectionGlobalDataLength =
actctx->tlib_section->names_len;
4015 data->ulAssemblyRosterIndex =
index->rosterindex;
4029 guid->Data3 &= 0x0fff;
4030 guid->Data3 |= (4 << 12);
4031 guid->Data4[0] &= 0x3f;
4032 guid->Data4[0] |= 0x80;
4036 unsigned int *
count,
unsigned int *
len,
unsigned int *module_len)
4040 for (
i = 0;
i < entities->
num;
i++)
4043 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)
4093 for (
i = 0;
i < entities->
num;
i++)
4096 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)
4118 (*index)->data_offset = *data_offset;
4119 (*index)->data_len =
sizeof(*data);
4120 (*index)->rosterindex = rosterindex;
4125 alias_index = (*index) +
section->count/2;
4133 data->size =
sizeof(*data);
4138 data->clsid = (*index)->guid;
4150 data->name_len = module_len;
4151 data->name_offset = *module_offset;
4153 data->progid_offset =
data->progid_len ?
data->size : 0;
4154 data->clrdata_len = 0;
4164 if (
data->miscstatus)
4166 if (
data->miscstatuscontent)
4168 if (
data->miscstatusthumbnail)
4170 if (
data->miscstatusicon)
4172 if (
data->miscstatusdocprint)
4175 if (
data->clrdata_offset)
4179 clrdata->
size =
sizeof(*clrdata);
4180 clrdata->
res[0] = 0;
4181 clrdata->
res[1] = 2;
4188 clrdata->
res2[0] = 0;
4189 clrdata->
res2[1] = 0;
4217 if (
data->progid_len)
4218 data->progid_offset +=
data->clrdata_len;
4219 (*index)->data_len +=
sizeof(*clrdata);
4232 if (
data->progid_len)
4236 ptrW[
data->progid_len/
sizeof(
WCHAR)] = 0;
4251 alias_index->
data_len = (*index)->data_len;
4259 (*data_offset) +=
sizeof(*clrdata);
4274 unsigned int i,
j, total_len = 0, class_count = 0, names_len = 0;
4276 ULONG module_offset, data_offset;
4282 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4294 total_len +=
sizeof(*header);
4301 header->size =
sizeof(*header);
4302 header->count = 2*class_count;
4305 module_offset =
sizeof(*header);
4309 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4350 if (!
actctx->comserver_section)
4366 data->ulDataFormatVersion = 1;
4367 data->lpData = comclass;
4371 data->lpSectionGlobalData = (
BYTE*)
actctx->comserver_section +
actctx->comserver_section->names_offset;
4372 data->ulSectionGlobalDataLength =
actctx->comserver_section->names_len;
4373 data->lpSectionBase =
actctx->comserver_section;
4378 data->ulAssemblyRosterIndex =
index->rosterindex;
4387 for (
i = 0;
i < entities->
num;
i++)
4390 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION)
4408 for (
i = 0;
i < entities->
num;
i++)
4411 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION)
4428 (*index)->data_offset = *data_offset;
4430 (*index)->rosterindex = rosterindex;
4433 data->size =
sizeof(*data);
4446 data->iid = (*index)->guid;
4471 data->name_offset =
data->name_len ?
sizeof(*data) : 0;
4483 *data_offset +=
sizeof(*data);
4497 unsigned int i,
j, total_len = 0,
count = 0;
4503 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4515 total_len +=
sizeof(*header);
4522 header->size =
sizeof(*header);
4524 header->index_offset =
sizeof(*header);
4528 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4572 if (!
actctx->ifaceps_section)
4588 data->ulDataFormatVersion = 1;
4589 data->lpData = iface;
4592 data->ulSectionGlobalDataLength = 0;
4593 data->lpSectionBase =
actctx->ifaceps_section;
4598 data->ulAssemblyRosterIndex =
index->rosterindex;
4608 unsigned int i,
j, total_len = 0,
count = 0;
4615 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4621 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES)
4625 total_len +=
sizeof(*index) +
sizeof(*data);
4636 total_len +=
sizeof(*header);
4643 header->size =
sizeof(*header);
4645 header->index_offset =
sizeof(*header);
4649 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4655 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES)
4657 ULONG version_len, name_len;
4677 index->data_offset = data_offset;
4679 index->rosterindex =
i + 1;
4683 data->size =
sizeof(*data);
4699 if (
data->version_len)
4703 ptrW[
data->version_len/
sizeof(
WCHAR)] = 0;
4706 data_offset +=
index->data_offset;
4732 if (!
actctx->clrsurrogate_section)
4748 data->ulDataFormatVersion = 1;
4749 data->lpData = surrogate;
4756 data->ulSectionGlobalDataLength = 0;
4757 data->lpSectionBase =
actctx->clrsurrogate_section;
4762 data->ulAssemblyRosterIndex =
index->rosterindex;
4769 unsigned int i,
j, single_len;
4772 for (
i = 0;
i < entities->
num;
i++)
4775 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)
4806 (*index)->name_offset = *data_offset;
4807 (*index)->name_len =
str.Length;
4809 (*index)->data_len =
sizeof(*data);
4810 (*index)->rosterindex = rosterindex;
4816 data->size =
sizeof(*data);
4818 data->clsid_offset = *global_offset;
4823 ptrW[(*index)->name_len/
sizeof(
WCHAR)] = 0;
4830 *global_offset +=
sizeof(
GUID);
4831 *data_offset +=
data->size;
4844 for (
i = 0;
i < entities->
num;
i++)
4847 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)
4880 unsigned int i,
j, total_len = 0,
count = 0;
4887 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4899 total_len +=
sizeof(*header);
4906 header->size =
sizeof(*header);
4914 global_offset =
header->global_offset;
4916 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4957 if (!
actctx->comserver_section)
4968 if (!
actctx->progid_section)
4986 data->ulDataFormatVersion = 1;
4989 data->lpSectionGlobalData = (
BYTE*)
actctx->progid_section +
actctx->progid_section->global_offset;
4990 data->ulSectionGlobalDataLength =
actctx->progid_section->global_len;
4991 data->lpSectionBase =
actctx->progid_section;
4996 data->ulAssemblyRosterIndex =
index->rosterindex;
5008 switch (section_kind)
5010 case ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION:
5011 DPRINT1(
"Unsupported yet section_kind %x\n", section_kind);
5013 case ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION:
5016 case ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION:
5019 case ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION:
5022 case ACTIVATION_CONTEXT_SECTION_GLOBAL_OBJECT_RENAME_TABLE:
5023 DPRINT1(
"Unsupported yet section_kind %x\n", section_kind);
5026 DPRINT1(
"Unknown section_kind %x\n", section_kind);
5032 if (
data && (
flags & FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX))
5045 switch (section_kind)
5047 case ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION:
5050 case ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION:
5053 case ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION:
5056 case ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES:
5060 DPRINT(
"Unknown section_kind %x\n", section_kind);
5066 if (
flags & FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX)
5082 ctx.cbSize =
sizeof(
ctx);
5084 ctx.dwFlags = ACTCTX_FLAG_RESOURCE_NAME_VALID | ACTCTX_FLAG_HMODULE_VALID;
5085 ctx.hModule =
NtCurrentTeb()->ProcessEnvironmentBlock->ImageBaseAddress;
5120 DPRINT1(
"Failed to create the implicit act ctx. Status: 0x%x!!!\n",
Status);
5134 IN PACTIVATION_CONTEXT_DATA ActivationContextData,
5140 const ACTCTXW *pActCtx = (
PVOID)ActivationContextData;
5150 DPRINT(
"RtlCreateActivationContext %p %08x, Image Base: %p\n", pActCtx, pActCtx ? pActCtx->dwFlags : 0, ((ACTCTXW*)ActivationContextData)->hModule);
5152 if (!pActCtx || pActCtx->cbSize <
sizeof(*pActCtx) ||
5164 actctx->config.type = ACTIVATION_CONTEXT_PATH_TYPE_NONE;
5166 actctx->appdir.type = ACTIVATION_CONTEXT_PATH_TYPE_WIN32_FILE;
5167 if (pActCtx->dwFlags & ACTCTX_FLAG_APPLICATION_NAME_VALID)
5177 if (pActCtx->dwFlags & ACTCTX_FLAG_HMODULE_VALID)
module = pActCtx->hModule;
5189 if (pActCtx->lpSource && !((pActCtx->dwFlags & ACTCTX_FLAG_RESOURCE_NAME_VALID) &&
5190 (pActCtx->dwFlags & ACTCTX_FLAG_HMODULE_VALID)))
5195 if (pActCtx->dwFlags & ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID &&
5198 DWORD dir_len, source_len;
5200 dir_len =
strlenW(pActCtx->lpAssemblyDirectory);
5201 source_len =
strlenW(pActCtx->lpSource);
5233 if (pActCtx->dwFlags & ACTCTX_FLAG_LANGID_VALID)
lang = pActCtx->wLangId;
5234 if (pActCtx->dwFlags & ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID)
directory = pActCtx->lpAssemblyDirectory;
5236 if (pActCtx->dwFlags & ACTCTX_FLAG_RESOURCE_NAME_VALID)
5239 if (pActCtx->dwFlags & ACTCTX_FLAG_HMODULE_VALID)
5242 pActCtx->lpResourceName,
lang );
5246 pActCtx->hModule, pActCtx->lpResourceName );
5248 else if (pActCtx->lpSource && pActCtx->lpResourceName)
5251 file, pActCtx->lpResourceName,
lang );
5254 NULL, pActCtx->lpResourceName );
5281#define ACT_CTX_VALID(p) ((((ULONG_PTR)p - 1) | 7) != -1)
5288 LONG OldRefCount, NewRefCount;
5296 OldRefCount =
ActCtx->RefCount;
5299 if (OldRefCount ==
LONG_MAX)
break;
5301 NewRefCount = OldRefCount + 1;
5304 OldRefCount) == OldRefCount)
5372 if (!(frame =
RtlAllocateHeap( RtlGetProcessHeap(), 0,
sizeof(*frame) )))
5379 DPRINT(
"ActiveSP %p: ACTIVATE (ActiveFrame %p -> NewFrame %p, Context %p)\n",
5419 DPRINT(
"ActiveSP %p: DEACTIVATE (ActiveFrame %p -> PreviousFrame %p)\n",
5421 NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame,
5427 while (
top !=
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame)
5448 ActiveFrame =
Stack->ActiveFrame;
5456 ActiveFrame = PrevFrame;
5484 if (
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame)
5486 *
handle =
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame->ActivationContext;
5503 for (frame =
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame; frame; frame = frame->
Previous)
5525 if (retlen) *retlen = 0;
5530 case ActivationContextBasicInformation:
5532 ACTIVATION_CONTEXT_BASIC_INFORMATION *
info =
buffer;
5534 if (retlen) *retlen =
sizeof(*info);
5543 case ActivationContextDetailedInformation:
5545 ACTIVATION_CONTEXT_DETAILED_INFORMATION *acdi =
buffer;
5547 SIZE_T len, manifest_len = 0, config_len = 0, appdir_len = 0;
5558 len =
sizeof(*acdi) + (manifest_len + config_len + appdir_len) *
sizeof(
WCHAR);
5560 if (retlen) *retlen =
len;
5564 acdi->ulFormatVersion =
assembly ? 1 : 0;
5565 acdi->ulAssemblyCount =
actctx->num_assemblies;
5568 acdi->ulRootConfigurationPathType =
actctx->config.type;
5569 acdi->ulRootConfigurationPathChars =
actctx->config.info ? (
DWORD)config_len - 1 : 0;
5570 acdi->ulAppDirPathType =
actctx->appdir.type;
5571 acdi->ulAppDirPathChars =
actctx->appdir.info ? (
DWORD)appdir_len - 1 : 0;
5575 acdi->lpRootManifestPath =
ptr;
5577 ptr += manifest_len;
5579 else acdi->lpRootManifestPath =
NULL;
5582 acdi->lpRootConfigurationPath =
ptr;
5586 else acdi->lpRootConfigurationPath =
NULL;
5589 acdi->lpAppDirPath =
ptr;
5592 else acdi->lpAppDirPath =
NULL;
5596 case AssemblyDetailedInformationInActivationContext:
5598 ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION *afdi =
buffer;
5614 id_len =
strlenW(assembly_id) + 1;
5623 if (retlen) *retlen =
len;
5626 RtlFreeHeap( RtlGetProcessHeap(), 0, assembly_id );
5631 afdi->ulEncodedAssemblyIdentityLength = (
DWORD)(id_len - 1) *
sizeof(
WCHAR);
5635 afdi->ulPolicyPathType = ACTIVATION_CONTEXT_PATH_TYPE_NONE;
5636 afdi->ulPolicyPathLength = 0;
5638 afdi->ulMetadataSatelliteRosterIndex = 0;
5639 afdi->ulManifestVersionMajor = 1;
5640 afdi->ulManifestVersionMinor = 0;
5641 afdi->ulPolicyVersionMajor = 0;
5642 afdi->ulPolicyVersionMinor = 0;
5643 afdi->ulAssemblyDirectoryNameLength = ad_len ? (
DWORD)(ad_len - 1) *
sizeof(
WCHAR) : 0;
5645 afdi->lpAssemblyEncodedAssemblyIdentity =
ptr;
5650 afdi->lpAssemblyManifestPath =
ptr;
5653 }
else afdi->lpAssemblyManifestPath =
NULL;
5654 afdi->lpAssemblyPolicyPath =
NULL;
5657 afdi->lpAssemblyDirectoryName =
ptr;
5660 else afdi->lpAssemblyDirectoryName =
NULL;
5661 RtlFreeHeap( RtlGetProcessHeap(), 0, assembly_id );
5665 case FileInformationInAssemblyOfAssemblyInActivationContext:
5667 const ACTIVATION_CONTEXT_QUERY_INDEX *acqi = subinst;
5668 ASSEMBLY_FILE_DETAILED_INFORMATION *afdi =
buffer;
5677 if (acqi->ulAssemblyIndex >=
actctx->num_assemblies)
5686 len =
sizeof(*afdi) + dll_len *
sizeof(
WCHAR);
5690 if (retlen) *retlen =
len;
5693 if (retlen) *retlen = 0;
5694 afdi->ulFlags = ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION;
5695 afdi->ulFilenameLength = dll_len ? (
DWORD)(dll_len - 1) *
sizeof(
WCHAR) : 0;
5696 afdi->ulPathLength = 0;
5700 afdi->lpFileName =
ptr;
5702 }
else afdi->lpFileName =
NULL;
5703 afdi->lpFilePath =
NULL;
5707 case CompatibilityInformationInActivationContext:
5710 COMPATIBILITY_CONTEXT_ELEMENT *elements;
5723 if (retlen) *retlen =
len;
5727 elements = (COMPATIBILITY_CONTEXT_ELEMENT*)(acci + 1);
5735 case RunlevelInformationInActivationContext:
5737 ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION *acrli =
buffer;
5743 len =
sizeof(*acrli);
5744 if (retlen) *retlen =
len;
5757 DPRINT(
"class %u not implemented\n",
class );
5776 pcbWrittenOrRequired);
5779#define FIND_ACTCTX_RETURN_FLAGS 0x00000002
5780#define FIND_ACTCTX_RETURN_ASSEMBLY_METADATA 0x00000004
5781#define FIND_ACTCTX_VALID_MASK (FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX | FIND_ACTCTX_RETURN_FLAGS | FIND_ACTCTX_RETURN_ASSEMBLY_METADATA)
5789 if (!section_name || !section_name->
Buffer ||
5792 (
data &&
data->cbSize <
offsetof(ACTCTX_SECTION_KEYED_DATA, ulAssemblyRosterIndex)))
5794 DPRINT1(
"invalid parameter\n");
5821 DPRINT(
"RtlFindActivationContextSectionString(%x %p %x %wZ %p)\n",
flags,
guid, section_kind, section_name,
ptr);
5825 DPRINT1(
"RtlFindActivationContextSectionString() failed with status %x\n",
status);
5835 DPRINT(
"RtlFindActivationContextSectionString() failed with status %x\n",
status);
5842 DPRINT(
"ActiveFrame: %p\n",
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame);
5843 if (
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame)
5856 DPRINT(
"RtlFindActivationContextSectionString() returns status %x\n",
status);
5869 ACTCTX_SECTION_KEYED_DATA *
data =
ptr;
5874 DPRINT1(
"expected extguid == NULL\n");
5878 if (
flags & ~FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX)
5887 if (
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame)
5921 ContextStack->
Flags = 0;
5927 *
Stack = ContextStack;
5941 ActiveFrame =
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame;
5943 DPRINT(
"ActiveSP %p: ACTIVATE (ActiveFrame %p -> NewFrame %p, Context %p)\n",
5944 NtCurrentTeb()->ActivationContextStackPointer, ActiveFrame,
5949 ASSERT(Frame->Size >=
sizeof(RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_BASIC));
5952 if (Frame->Size >=
sizeof(RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED))
5973 NewFrame = &Frame->Frame;
5976 Frame->Frame.
Previous = ActiveFrame;
5985 DPRINT(
"Setting new active frame %p instead of old %p\n", NewFrame, ActiveFrame);
5986 NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame = NewFrame;
5991 DPRINT(
"Trying to activate already activated activation context\n");
5998 NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame = NewFrame;
6002 NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame = NewFrame;
6015 ActiveFrame =
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame;
6019 ASSERT(Frame->Size >=
sizeof(RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_BASIC));
6027 if (Frame->Size >=
sizeof(RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED))
6042 DPRINT1(
"Deactivating not really activated activation context\n");
6044 return &Frame->Frame;
6048 NewFrame = &Frame->Frame;
6049 if (ActiveFrame != NewFrame)
6051 DPRINT1(
"Deactivating wrong active frame: %p != %p\n", ActiveFrame, NewFrame);
6054 DPRINT(
"ActiveSP %p: DEACTIVATE (ActiveFrame %p -> PreviousFrame %p)\n",
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
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
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)
static DWORD RosGetProcessCompatVersion(VOID)
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define NT_SUCCESS(StatCode)
static const WCHAR quote[]
#define INVALID_HANDLE_VALUE
#define RtlImageDirectoryEntryToData
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]
@ 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
WINE_UNICODE_INLINE WCHAR * memchrW(const WCHAR *ptr, WCHAR ch, size_t n)
#define EXCEPTION_EXECUTE_HANDLER
_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 RtlFreeThreadActivationContextStack(void)
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 InterlockedExchangeAdd
#define InterlockedCompareExchangePointer
#define InterlockedCompareExchange
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[]
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)
VOID NTAPI LdrpInitializeProcessCompat(PVOID pProcessActctx, PVOID *pOldShimData)
_In_ PCWSTR _Out_ PVOID * ActCtx
#define memcpy(s1, s2, n)
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[]
#define _Must_inspect_result_
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)
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)
NTSYSAPI VOID NTAPI RtlRaiseException(_In_ PEXCEPTION_RECORD ExceptionRecord)
#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
_Use_decl_annotations_ NTSTATUS NTAPI RtlMultiByteToUnicodeN(_Out_ PWCH UnicodeString, _In_ ULONG UnicodeSize, _Out_opt_ PULONG ResultSize, _In_ PCCH MbString, _In_ ULONG MbSize)
_Use_decl_annotations_ NTSTATUS NTAPI RtlMultiByteToUnicodeSize(_Out_ PULONG UnicodeSize, _In_ PCCH MbString, _In_ ULONG MbSize)
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)
#define NtCurrentProcess()
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_SXS_CORRUPTION
#define STATUS_INVALID_IMAGE_FORMAT
#define STATUS_SXS_ASSEMBLY_NOT_FOUND
#define STATUS_DLL_NOT_FOUND
#define STATUS_SXS_EARLY_DEACTIVATION
#define STATUS_NOT_IMPLEMENTED
#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 FileStandardInformation
#define _SEH2_EXCEPT(...)
#define strncmpiW(s1, s2, n)
#define memicmpW(s1, s2, n)
#define strncmpW(s1, s2, n)
#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)
_Check_return_ _CRTIMP int __cdecl _wcsnicmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
struct _ACTIVATION_CONTEXT * PIACTIVATION_CONTEXT
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[]
struct _ACTIVATION_CONTEXT_WRAPPED ACTIVATION_CONTEXT_WRAPPED
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)
FORCEINLINE VOID RtlpValidateActCtx(IN PACTIVATION_CONTEXT ActCtx)
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 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[]
static const WCHAR miscstatusdocprintW[]
static IMAGE_RESOURCE_DIRECTORY * find_first_id_entry(IMAGE_RESOURCE_DIRECTORY *dir, void *root, int want_dir)
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[]
struct _ACTIVATION_CONTEXT_WRAPPED * PACTIVATION_CONTEXT_WRAPPED
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)
struct _ASSEMBLY_STORAGE_MAP_ENTRY ASSEMBLY_STORAGE_MAP_ENTRY
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)
BOOLEAN RtlpNotAllowingMultipleActivation
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)
NTSTATUS NTAPI RtlpFindActivationContextSection_CheckParameters(ULONG flags, const GUID *guid, ULONG section_kind, const UNICODE_STRING *section_name, PACTCTX_SECTION_KEYED_DATA data)
struct _ACTIVATION_CONTEXT ACTIVATION_CONTEXT
static const WCHAR restrictedW[]
static const WCHAR actslikelabelW[]
static const WCHAR optionalW[]
static const WCHAR printerDriverIsolationW[]
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 _Must_inspect_result_ NTSTATUS find_clr_surrogate(ACTIVATION_CONTEXT *actctx, const GUID *guid, ACTCTX_SECTION_KEYED_DATA *data)
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)
PRTL_ACTIVATION_CONTEXT_STACK_FRAME FASTCALL RtlActivateActivationContextUnsafeFast(IN PRTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED Frame, IN PVOID Context)
static BOOL is_xmlns_attr(const struct xml_attr *attr)
static const WCHAR miscstatusW[]
static WCHAR * strdupW(const WCHAR *str)
static const WCHAR ultraHighResolutionScrollingAwareW[]
NTSTATUS NTAPI RtlActivateActivationContextEx(ULONG flags, PTEB tebAddress, HANDLE handle, PULONG_PTR cookie)
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 NTSTATUS search_manifest_in_module(struct actctx_loader *acl, struct assembly_identity *ai, LPCWSTR filename, LPCWSTR directory, BOOL shared, HANDLE hModule, ULONG lang)
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[]
IMAGE_RESOURCE_DIRECTORY * find_entry_by_name(IMAGE_RESOURCE_DIRECTORY *dir, LPCWSTR name, void *root, int want_dir)
static void actctx_addref(ACTIVATION_CONTEXT *actctx)
static const WCHAR manifestv3W[]
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 parse_manifest(struct actctx_loader *acl, struct assembly_identity *ai, LPCWSTR filename, LPCWSTR directory, BOOL shared, const void *buffer, SIZE_T size)
static const WCHAR asmv1W[]
static const WCHAR cantlinkinsideW[]
static BOOL xmlstr_cmp_end(const xmlstr_t *xmlstr, const WCHAR *str)
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)
PRTL_ACTIVATION_CONTEXT_STACK_FRAME FASTCALL RtlDeactivateActivationContextUnsafeFast(IN PRTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED Frame)
static void parse_com_class_progid(xmlbuf_t *xmlbuf, struct entity *entity, const struct xml_elem *parent)
static const WCHAR xmlnsW[]
VOID NTAPI RtlpSxsBreakOnInvalidMarker(IN PACTIVATION_CONTEXT ActCtx, IN ULONG FailureCode)
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[]
static _Must_inspect_result_ NTSTATUS find_cominterface_redirection(ACTIVATION_CONTEXT *actctx, const GUID *guid, ACTCTX_SECTION_KEYED_DATA *data)
struct _ASSEMBLY_STORAGE_MAP ASSEMBLY_STORAGE_MAP
static _Must_inspect_result_ NTSTATUS build_comserver_section(ACTIVATION_CONTEXT *actctx, struct guidsection_header **section)
static _Must_inspect_result_ 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 g_xmlW[]
static NTSTATUS build_wndclass_section(ACTIVATION_CONTEXT *actctx, struct strsection_header **section)
static const WCHAR imemodeW[]
static _Must_inspect_result_ 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 _Must_inspect_result_ NTSTATUS build_clr_surrogate_section(ACTIVATION_CONTEXT *actctx, struct guidsection_header **section)
static xmlstr_t find_xmlns(xmlbuf_t *xmlbuf, const xmlstr_t *name)
static const WCHAR manifestv2W[]
static const WCHAR actslikebuttonW[]
static void parse_description_elem(xmlbuf_t *xmlbuf, const struct xml_elem *parent)
NTSTATUS NTAPI RtlAllocateActivationContextStack(IN PACTIVATION_CONTEXT_STACK *Stack)
static void append_string(WCHAR *buffer, const WCHAR *prefix, const WCHAR *str)
NTSTATUS NTAPI RtlQueryInformationActiveActivationContext(ULONG ulInfoClass, PVOID pvBuffer, SIZE_T cbBuffer OPTIONAL, SIZE_T *pcbWrittenOrRequired OPTIONAL)
static _Must_inspect_result_ NTSTATUS build_progid_section(ACTIVATION_CONTEXT *actctx, struct strsection_header **section)
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 void parse_expect_no_attr(xmlbuf_t *xmlbuf, BOOL *end)
static const struct olemisc_entry olemisc_values[]
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[]
#define FIND_ACTCTX_RETURN_ASSEMBLY_METADATA
static const WCHAR hashW[]
static const WCHAR bindingRedirectW[]
VOID NTAPI RtlFreeActivationContextStack(IN PACTIVATION_CONTEXT_STACK Stack)
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 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)
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)
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 _Must_inspect_result_ NTSTATUS build_tlib_section(ACTIVATION_CONTEXT *actctx, struct guidsection_header **section)
static const WCHAR dependencyW[]
static const WCHAR simpleframeW[]
static struct clrsurrogate_data * get_surrogate_data(ACTIVATION_CONTEXT *actctx, const struct guid_index *index)
static BOOL set_error(xmlbuf_t *xmlbuf)
static BOOL is_matching_string(const WCHAR *str1, const WCHAR *str2)
static const WCHAR wantstomenumergeW[]
static const WCHAR hiddenW[]
void actctx_init(PVOID *pOldShimData)
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 WCHAR invisibleatruntimeW[]
static const WCHAR mscoree2W[]
static BOOL parse_typelib_flags(const xmlstr_t *value, struct entity *entity)
static const WCHAR disableThemingW[]
static const WCHAR dependentAssemblyW[]
static const WCHAR windowsSettings2017NSW[]
static const WCHAR windowsSettings2016NSW[]
static const WCHAR magicFutureSettingW[]
static const WCHAR windowClassW[]
BOOLEAN NTAPI RtlIsActivationContextActive(HANDLE handle)
static void generate_uuid(ULONG *seed, GUID *guid)
#define GUIDSECTION_MAGIC
static void free_assembly_identity(struct assembly_identity *ai)
static const WCHAR wildcardW[]
IMAGE_RESOURCE_DIRECTORY * find_first_entry(IMAGE_RESOURCE_DIRECTORY *dir, void *root, int want_dir)
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 _Must_inspect_result_ NTSTATUS build_ifaceps_section(ACTIVATION_CONTEXT *actctx, struct guidsection_header **section)
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 NTSTATUS get_module_filename(HMODULE module, UNICODE_STRING *str, USHORT extra_len)
static struct guid_index * find_guid_index(const struct guidsection_header *section, const GUID *guid)
static const WCHAR clrClassW[]
#define FIND_ACTCTX_VALID_MASK
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[]
#define FIND_ACTCTX_RETURN_FLAGS
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)
static const WCHAR manifestv1W[]
static _Must_inspect_result_ NTSTATUS add_ifaceps_record(struct guidsection_header *section, struct entity_array *entities, struct guid_index **index, ULONG *data_offset, ULONG rosterindex)
struct _ASSEMBLY_STORAGE_MAP * PASSEMBLY_STORAGE_MAP
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 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 _Must_inspect_result_ NTSTATUS find_comserver_redirection(ACTIVATION_CONTEXT *actctx, const GUID *guid, ACTCTX_SECTION_KEYED_DATA *data)
#define ACTCTX_MAGIC_MARKER
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 ACTIVATION_CONTEXT_WRAPPED system_actctx
static const WCHAR setclientsitefirstW[]
struct _ASSEMBLY_STORAGE_MAP_ENTRY * PASSEMBLY_STORAGE_MAP_ENTRY
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
ACTIVATION_CONTEXT ActivationContext
struct strsection_header * dllredirect_section
PVOID NotificationContext
PASSEMBLY_STORAGE_MAP_ENTRY InlineStorageMapEntries
PACTIVATION_CONTEXT_DATA ActivationContextData
PVOID NotificationRoutine
ASSEMBLY_STORAGE_MAP StorageMap
ULONG DisabledNotifications[8]
struct guidsection_header * ifaceps_section
ULONG SentNotifications[8]
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
PASSEMBLY_STORAGE_MAP_ENTRY * AssemblyArray
struct _EXCEPTION_RECORD * ExceptionRecord
ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]
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
DWORD miscstatusthumbnail
struct entity::@4970::@4976 settings
struct entity::@4970::@4974 class
struct entity::@4970::@4975 clrsurrogate
struct entity::@4970::@4973 ifaceps
struct entity::@4970::@4972 comclass
struct entity::@4970::@4971 typelib
struct xml_attr namespaces[MAX_NAMESPACES]
#define EXCEPTION_NONCONTINUABLE
#define FIELD_OFFSET(t, f)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_INVALID_PARAMETER
#define STATUS_NO_SUCH_FILE
static const WCHAR lang[]
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
#define IS_TEXT_UNICODE_REVERSE_SIGNATURE
#define IS_TEXT_UNICODE_SIGNATURE
#define CREATEPROCESS_MANIFEST_RESOURCE_ID
_Must_inspect_result_ _In_ ULONG Flags
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
#define RtlUshortByteSwap(_x)