25#include <wine/unicode.h>
28#define GetProcessHeap() RtlGetProcessHeap()
29#define GetCurrentProcess() NtCurrentProcess()
33#define FILE_END_OF_FILE_INFORMATION FILE_STANDARD_INFORMATION
34#define FileEndOfFileInformation FileStandardInformation
35#define RELATIVE_PATH RtlPathTypeRelative
36#define windows_dir SharedUserData->NtSystemRoot
37#define ARRAY_SIZE(a) (sizeof(a)/sizeof((a)[0]))
38#define wcsnicmp _wcsnicmp
39#define swprintf _snwprintf
42#undef CREATEPROCESS_MANIFEST_RESOURCE_ID
44BOOLEAN RtlpNotAllowingMultipleActivation;
48#define ACTCTX_FLAGS_ALL (\
49 ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID |\
50 ACTCTX_FLAG_LANGID_VALID |\
51 ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID |\
52 ACTCTX_FLAG_RESOURCE_NAME_VALID |\
53 ACTCTX_FLAG_SET_PROCESS_DEFAULT |\
54 ACTCTX_FLAG_APPLICATION_NAME_VALID |\
55 ACTCTX_FLAG_SOURCE_IS_ASSEMBLYREF |\
56 ACTCTX_FLAG_HMODULE_VALID )
58#define ACTCTX_MAGIC 0xC07E3E11
59#define STRSECTION_MAGIC 0x64487353
60#define GUIDSECTION_MAGIC 0x64487347
62#define ACTCTX_MAGIC_MARKER (PVOID)'gMcA'
64#define ACTCTX_FAKE_HANDLE ((HANDLE) 0xf00baa)
65#define ACTCTX_FAKE_COOKIE ((ULONG_PTR) 0xf00bad)
68#define RT_MANIFEST ((ULONG_PTR)24)
69#define CREATEPROCESS_MANIFEST_RESOURCE_ID ((ULONG_PTR)1)
108#define MAX_NAMESPACES 64
554typedef struct _ASSEMBLY_STORAGE_MAP_ENTRY
559} ASSEMBLY_STORAGE_MAP_ENTRY, *PASSEMBLY_STORAGE_MAP_ENTRY;
561typedef struct _ASSEMBLY_STORAGE_MAP
565 PASSEMBLY_STORAGE_MAP_ENTRY *AssemblyArray;
566} ASSEMBLY_STORAGE_MAP, *PASSEMBLY_STORAGE_MAP;
575 PACTIVATION_CONTEXT_DATA ActivationContextData;
576 PVOID NotificationRoutine;
578 ULONG SentNotifications[8];
579 ULONG DisabledNotifications[8];
580 ASSEMBLY_STORAGE_MAP StorageMap;
581 PASSEMBLY_STORAGE_MAP_ENTRY InlineStorageMapEntries;
582 ULONG StackTraceIndex;
583 PVOID StackTraces[4][4];
616#elif defined __x86_64__
620#elif defined __aarch64__
626static 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};
627static 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};
628static 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};
631typedef struct _ACTIVATION_CONTEXT_WRAPPED
635} ACTIVATION_CONTEXT_WRAPPED, *PACTIVATION_CONTEXT_WRAPPED;
663 PACTIVATION_CONTEXT_WRAPPED pActual;
667 ACTIVATION_CONTEXT_WRAPPED,
674 DbgPrint(
"%s : Invalid activation context marker %p found in activation context %p\n"
675 " This means someone stepped on the allocation, or someone is using a\n"
676 " deallocated activation context\n",
678 pActual->MagicMarker,
681 RtlpSxsBreakOnInvalidMarker(
ActCtx, 1);
687static const WCHAR assemblyIdentityW[] = {
'a',
's',
's',
'e',
'm',
'b',
'l',
'y',
'I',
'd',
'e',
'n',
't',
'i',
't',
'y',0};
688static const WCHAR bindingRedirectW[] = {
'b',
'i',
'n',
'd',
'i',
'n',
'g',
'R',
'e',
'd',
'i',
'r',
'e',
'c',
't',0};
690static const WCHAR clrSurrogateW[] = {
'c',
'l',
'r',
'S',
'u',
'r',
'r',
'o',
'g',
'a',
't',
'e',0};
692static 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};
693static 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};
694static const WCHAR dependencyW[] = {
'd',
'e',
'p',
'e',
'n',
'd',
'e',
'n',
'c',
'y',0};
695static const WCHAR dependentAssemblyW[] = {
'd',
'e',
'p',
'e',
'n',
'd',
'e',
'n',
't',
'A',
's',
's',
'e',
'm',
'b',
'l',
'y',0};
696static const WCHAR descriptionW[] = {
'd',
'e',
's',
'c',
'r',
'i',
'p',
't',
'i',
'o',
'n',0};
700static const WCHAR noInheritableW[] = {
'n',
'o',
'I',
'n',
'h',
'e',
'r',
'i',
't',
'a',
'b',
'l',
'e',0};
702static const WCHAR windowClassW[] = {
'w',
'i',
'n',
'd',
'o',
'w',
'C',
'l',
'a',
's',
's',0};
709static const WCHAR manifestVersionW[] = {
'm',
'a',
'n',
'i',
'f',
'e',
's',
't',
'V',
'e',
'r',
's',
'i',
'o',
'n',0};
712static const WCHAR newVersionW[] = {
'n',
'e',
'w',
'V',
'e',
'r',
's',
'i',
'o',
'n',0};
713static const WCHAR oldVersionW[] = {
'o',
'l',
'd',
'V',
'e',
'r',
's',
'i',
'o',
'n',0};
715static 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};
717static const WCHAR publicKeyTokenW[] = {
'p',
'u',
'b',
'l',
'i',
'c',
'K',
'e',
'y',
'T',
'o',
'k',
'e',
'n',0};
718static const WCHAR threadingmodelW[] = {
't',
'h',
'r',
'e',
'a',
'd',
'i',
'n',
'g',
'M',
'o',
'd',
'e',
'l',0};
726static const WCHAR restrictedW[] = {
'R',
'E',
'S',
'T',
'R',
'I',
'C',
'T',
'E',
'D',0};
729static const WCHAR hasdiskimageW[] = {
'H',
'A',
'S',
'D',
'I',
'S',
'K',
'I',
'M',
'A',
'G',
'E',0};
731static const WCHAR miscstatusW[] = {
'm',
'i',
's',
'c',
'S',
't',
'a',
't',
'u',
's',0};
732static const WCHAR miscstatusiconW[] = {
'm',
'i',
's',
'c',
'S',
't',
'a',
't',
'u',
's',
'I',
'c',
'o',
'n',0};
733static const WCHAR miscstatuscontentW[] = {
'm',
'i',
's',
'c',
'S',
't',
'a',
't',
'u',
's',
'C',
'o',
'n',
't',
'e',
'n',
't',0};
734static const WCHAR miscstatusthumbnailW[] = {
'm',
'i',
's',
'c',
'S',
't',
'a',
't',
'u',
's',
'T',
'h',
'u',
'm',
'b',
'n',
'a',
'i',
'l',0};
735static const WCHAR miscstatusdocprintW[] = {
'm',
'i',
's',
'c',
'S',
't',
'a',
't',
'u',
's',
'D',
'o',
'c',
'P',
'r',
'i',
'n',
't',0};
736static const WCHAR baseInterfaceW[] = {
'b',
'a',
's',
'e',
'I',
'n',
't',
'e',
'r',
'f',
'a',
'c',
'e',0};
737static const WCHAR nummethodsW[] = {
'n',
'u',
'm',
'M',
'e',
't',
'h',
'o',
'd',
's',0};
738static const WCHAR proxyStubClsid32W[] = {
'p',
'r',
'o',
'x',
'y',
'S',
't',
'u',
'b',
'C',
'l',
's',
'i',
'd',
'3',
'2',0};
739static const WCHAR runtimeVersionW[] = {
'r',
'u',
'n',
't',
'i',
'm',
'e',
'V',
'e',
'r',
's',
'i',
'o',
'n',0};
740static const WCHAR mscoreeW[] = {
'M',
'S',
'C',
'O',
'R',
'E',
'E',
'.',
'D',
'L',
'L',0};
741static const WCHAR mscoree2W[] = {
'm',
's',
'c',
'o',
'r',
'e',
'e',
'.',
'd',
'l',
'l',0};
743static const WCHAR activatewhenvisibleW[] = {
'a',
'c',
't',
'i',
'v',
'a',
't',
'e',
'w',
'h',
'e',
'n',
'v',
'i',
's',
'i',
'b',
'l',
'e',0};
744static const WCHAR actslikebuttonW[] = {
'a',
'c',
't',
's',
'l',
'i',
'k',
'e',
'b',
'u',
't',
't',
'o',
'n',0};
745static const WCHAR actslikelabelW[] = {
'a',
'c',
't',
's',
'l',
'i',
'k',
'e',
'l',
'a',
'b',
'e',
'l',0};
748static const WCHAR canlinkbyole1W[] = {
'c',
'a',
'n',
'l',
'i',
'n',
'k',
'b',
'y',
'o',
'l',
'e',
'1',0};
749static const WCHAR cantlinkinsideW[] = {
'c',
'a',
'n',
't',
'l',
'i',
'n',
'k',
'i',
'n',
's',
'i',
'd',
'e',0};
750static 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};
752static const WCHAR insertnotreplaceW[] = {
'i',
'n',
's',
'e',
'r',
't',
'n',
'o',
't',
'r',
'e',
'p',
'l',
'a',
'c',
'e',0};
754static const WCHAR invisibleatruntimeW[] = {
'i',
'n',
'v',
'i',
's',
'i',
'b',
'l',
'e',
'a',
't',
'r',
'u',
'n',
't',
'i',
'm',
'e',0};
755static const WCHAR islinkobjectW[] = {
'i',
's',
'l',
'i',
'n',
'k',
'o',
'b',
'j',
'e',
'c',
't',0};
756static const WCHAR nouiactivateW[] = {
'n',
'o',
'u',
'i',
'a',
'c',
't',
'i',
'v',
'a',
't',
'e',0};
757static const WCHAR onlyiconicW[] = {
'o',
'n',
'l',
'y',
'i',
'c',
'o',
'n',
'i',
'c',0};
758static const WCHAR recomposeonresizeW[] = {
'r',
'e',
'c',
'o',
'm',
'p',
'o',
's',
'e',
'o',
'n',
'r',
'e',
's',
'i',
'z',
'e',0};
759static 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};
760static const WCHAR setclientsitefirstW[] = {
's',
'e',
't',
'c',
'l',
'i',
'e',
'n',
't',
's',
'i',
't',
'e',
'f',
'i',
'r',
's',
't',0};
761static const WCHAR simpleframeW[] = {
's',
'i',
'm',
'p',
'l',
'e',
'f',
'r',
'a',
'm',
'e',0};
763static 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};
764static const WCHAR wantstomenumergeW[] = {
'w',
'a',
'n',
't',
's',
't',
'o',
'm',
'e',
'n',
'u',
'm',
'e',
'r',
'g',
'e',0};
766static const WCHAR compatibilityW[] = {
'c',
'o',
'm',
'p',
'a',
't',
'i',
'b',
'i',
'l',
'i',
't',
'y',0};
767static 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};
768static const WCHAR applicationW[] = {
'a',
'p',
'p',
'l',
'i',
'c',
'a',
't',
'i',
'o',
'n',0};
769static const WCHAR supportedOSW[] = {
's',
'u',
'p',
'p',
'o',
'r',
't',
'e',
'd',
'O',
'S',0};
771static 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};
772static const WCHAR requestedPrivilegesW[] = {
'r',
'e',
'q',
'u',
'e',
's',
't',
'e',
'd',
'P',
'r',
'i',
'v',
'i',
'l',
'e',
'g',
'e',
's',0};
775static const WCHAR windowsSettingsW[] = {
'w',
'i',
'n',
'd',
'o',
'w',
's',
'S',
'e',
't',
't',
'i',
'n',
'g',
's',0};
776static const WCHAR autoElevateW[] = {
'a',
'u',
't',
'o',
'E',
'l',
'e',
'v',
'a',
't',
'e',0};
777static const WCHAR disableThemingW[] = {
'd',
'i',
's',
'a',
'b',
'l',
'e',
'T',
'h',
'e',
'm',
'i',
'n',
'g',0};
778static 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};
779static 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};
780static 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};
781static 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};
782static 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};
784static const WCHAR dpiAwarenessW[] = {
'd',
'p',
'i',
'A',
'w',
'a',
'r',
'e',
'n',
'e',
's',
's',0};
785static const WCHAR gdiScalingW[] = {
'g',
'd',
'i',
'S',
'c',
'a',
'l',
'i',
'n',
'g',0};
786static 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};
787static const WCHAR longPathAwareW[] = {
'l',
'o',
'n',
'g',
'P',
'a',
't',
'h',
'A',
'w',
'a',
'r',
'e',0};
788static const WCHAR magicFutureSettingW[] = {
'm',
'a',
'g',
'i',
'c',
'F',
'u',
't',
'u',
'r',
'e',
'S',
'e',
't',
't',
'i',
'n',
'g',0};
789static 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};
790static 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};
827static const WCHAR version_formatW[] = {
'%',
'u',
'.',
'%',
'u',
'.',
'%',
'u',
'.',
'%',
'u',0};
896 return (ch ==
' ' || ch ==
'\r' || ch ==
'\n' || ch ==
'\t');
938 DPRINT(
"add_assembly() actctx %p, activeframe ??\n",
actctx);
940 if (
actctx->num_assemblies ==
actctx->allocated_assemblies)
943 unsigned int new_count;
946 new_count =
actctx->allocated_assemblies * 2;
957 actctx->allocated_assemblies = new_count;
972 unsigned int new_count;
999 new_count *
sizeof(COMPATIBILITY_CONTEXT_ELEMENT) );
1026 unsigned int new_count;
1029 new_count =
array->allocated * 2;
1031 array->base, new_count *
sizeof(*
array->base) );
1040 array->allocated = new_count;
1055 case ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION:
1065 case ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION:
1072 case ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION:
1076 case ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION:
1079 case ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES:
1084 case ACTIVATION_CONTEXT_SECTION_APPLICATION_SETTINGS:
1098 if (!str1)
return !str2;
1132 TRACE(
"reusing existing assembly for %S arch %S version %u.%u.%u.%u\n",
1141 TRACE(
"reusing existing dependency for %S arch %S version %u.%u.%u.%u\n",
1150 unsigned int new_count;
1181 static const WCHAR undW[] = {
'_',0};
1182 static const WCHAR noneW[] = {
'n',
'o',
'n',
'e',0};
1183 static const WCHAR mskeyW[] = {
'd',
'e',
'a',
'd',
'b',
'e',
'e',
'f',0};
1227 {
',',
'p',
'r',
'o',
'c',
'e',
's',
's',
'o',
'r',
'A',
'r',
'c',
'h',
'i',
't',
'e',
'c',
't',
'u',
'r',
'e',
'=',0};
1228 static const WCHAR public_keyW[] =
1229 {
',',
'p',
'u',
'b',
'l',
'i',
'c',
'K',
'e',
'y',
'T',
'o',
'k',
'e',
'n',
'=',0};
1230 static const WCHAR typeW2[] =
1231 {
',',
't',
'y',
'p',
'e',
'=',0};
1232 static const WCHAR versionW2[] =
1233 {
',',
'v',
'e',
'r',
's',
'i',
'o',
'n',
'=',0};
1261 PACTIVATION_CONTEXT_WRAPPED pActual;
1274 DPRINT1(
"Invalid activation context handle!\n");
1287 PACTIVATION_CONTEXT_WRAPPED pActual;
1293 for (
i = 0;
i <
actctx->num_assemblies;
i++)
1322 pActual->MagicMarker = 0;
1366 for (
i = xmlbuf->
ns_pos - 1;
i >= 0;
i--)
1388 if (*xmlbuf->
ptr ==
'/')
1391 if (xmlbuf->
ptr == xmlbuf->
end || *xmlbuf->
ptr !=
'>')
1399 if (*xmlbuf->
ptr ==
'>')
1434 xmlbuf->
ptr = xmlbuf->
end;
1478 for (
ptr = xmlbuf->
ptr; ptr < xmlbuf->
end;
ptr++)
if (*
ptr ==
'<')
break;
1481 xmlbuf->
ptr = xmlbuf->
end;
1485 if (
ptr + 3 < xmlbuf->
end &&
ptr[0] ==
'!' &&
ptr[1] ==
'-' &&
ptr[2] ==
'-')
1488 if (
ptr[0] ==
'-' &&
ptr[1] ==
'-' &&
ptr[2] ==
'>')
break;
1490 if (
ptr + 3 > xmlbuf->
end)
1492 xmlbuf->
ptr = xmlbuf->
end;
1502 if (ptr < xmlbuf->
end && *
ptr ==
'/')
1541 if (
ptr[0] ==
'?' &&
ptr[1] ==
'>')
1556 for (
ptr = xmlbuf->
ptr; ptr < xmlbuf->
end;
ptr++)
if (*
ptr ==
'<')
break;
1568 unsigned int ver[4];
1573 ver[0] = ver[1] = ver[2] = ver[3] =
pos = 0;
1574 for (curr =
str->ptr; curr < str->
ptr +
str->len; curr++)
1576 if (*curr >=
'0' && *curr <=
'9')
1578 ver[
pos] = ver[
pos] * 10 + *curr -
'0';
1579 if (ver[
pos] >= 0x10000)
goto error;
1581 else if (*curr ==
'.')
1671 static const WCHAR apartW[] = {
'A',
'p',
'a',
'r',
't',
'm',
'e',
'n',
't',0};
1672 static const WCHAR neutralW[] = {
'N',
'e',
'u',
't',
'r',
'a',
'l',0};
1673 static const WCHAR freeW[] = {
'F',
'r',
'e',
'e',0};
1674 static const WCHAR bothW[] = {
'B',
'o',
't',
'h',0};
1712 WARN(
"unknown flag %S\n",
str);
1723 while (i < value->
len)
1752 if (!new_progids)
return FALSE;
1784 if (!(
entity =
add_entity(&
dll->entities, ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)))
1861 for (curr =
str->ptr; curr < str->
ptr +
str->len; curr++)
1863 if (*curr >=
'0' && *curr <=
'9')
1864 num =
num * 10 + *curr -
'0';
1890 if (!(
entity =
add_entity(entities, ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)))
1911 if (!(
entity =
add_entity(&
dll->entities, ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION)))
1971 while (i < value->
len)
2000 unsigned int ver[2];
2005 ver[0] = ver[1] =
pos = 0;
2006 for (curr =
str->ptr; curr < str->
ptr +
str->len; curr++)
2008 if (*curr >=
'0' && *curr <=
'9')
2010 ver[
pos] = ver[
pos] * 10 + *curr -
'0';
2011 if (ver[
pos] >= 0x10000)
goto error;
2013 else if (*curr ==
'.')
2034 if (!(
entity =
add_entity(&
dll->entities, ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION)))
2066 return (
len + 3) & ~3;
2071 static const WCHAR fmtW[] = {
'%',
'u',
'.',
'%',
'u',
'.',
'%',
'u',
'.',
'%',
'u',0};
2088 if (!(
entity =
add_entity(&
dll->entities, ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION)))
2310 memset(&ai, 0,
sizeof(ai));
2315 static const WCHAR allowDelayedBindingW[] = {
'a',
'l',
'l',
'o',
'w',
'D',
'e',
'l',
'a',
'y',
'e',
'd',
'B',
'i',
'n',
'd',
'i',
'n',
'g',0};
2316 static const WCHAR trueW[] = {
't',
'r',
'u',
'e',0};
2419 static const WCHAR sha1W[] = {
'S',
'H',
'A',
'1',0};
2471 COMPATIBILITY_CONTEXT_ELEMENT *compat;
2484 compat->Type = ACTCTX_COMPATIBILITY_ELEMENT_TYPE_OS;
2485 compat->Id = compat_id;
2611 static const WCHAR levelW[] = {
'l',
'e',
'v',
'e',
'l',0};
2612 static const WCHAR asInvokerW[] = {
'a',
's',
'I',
'n',
'v',
'o',
'k',
'e',
'r',0};
2613 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};
2614 static const WCHAR highestAvailableW[] = {
'h',
'i',
'g',
'h',
'e',
's',
't',
'A',
'v',
'a',
'i',
'l',
'a',
'b',
'l',
'e',0};
2615 static const WCHAR uiAccessW[] = {
'u',
'i',
'A',
'c',
'c',
'e',
's',
's',0};
2616 static const WCHAR falseW[] = {
'f',
'a',
'l',
's',
'e',0};
2617 static const WCHAR trueW[] = {
't',
'r',
'u',
'e',0};
2720 static const WCHAR v10W[] = {
'1',
'.',
'0',0};
2778 if (!xmlbuf->
error && expected_ai)
2849 if (xmlbuf->
ptr != xmlbuf->
end)
2882 : ACTIVATION_CONTEXT_PATH_TYPE_NONE;
2901 xmlbuf.
ptr = new_buff;
2915 DPRINT1(
"RtlMultiByteToUnicodeSize failed with %lx\n",
status);
2923 DPRINT1(
"RtlMultiByteToUnicodeN failed with %lx\n",
status);
2927 xmlbuf.
ptr = new_buff;
2941 attr.RootDirectory = 0;
2945 attr.SecurityQualityOfService =
NULL;
2972 else TRACE(
"looking for res %s in module %p %s\n",
debugstr_w(resname),
2986 else if (resname[0] ==
'#')
3017 void *
root,
int want_dir );
3021 void *
root,
int want_dir )
3026 for (
pos =
dir->NumberOfNamedEntries; pos < dir->NumberOfNamedEntries +
dir->NumberOfIdEntries;
pos++)
3028 if (!
entry[
pos].DataIsDirectory == !want_dir)
3054 if (!(
ptr = find_first_id_entry(resdirptr,
root, 1)))
3082 WCHAR resnameBuf[20];
3088 resptr = resnameBuf;
3094 attr.RootDirectory = 0;
3098 attr.SecurityQualityOfService =
NULL;
3143 attr.RootDirectory = 0;
3147 attr.SecurityQualityOfService =
NULL;
3174 static const WCHAR fmtW[] = {
'.',
'%',
'l',
'u',0 };
3183 TRACE(
"looking for manifest associated with %S id %lu\n",
filename, resid );
3222 static const WCHAR lookup_fmtW[] =
3223 {
'%',
's',
'_',
'%',
's',
'_',
'%',
's',
'_',
'%',
'u',
'.',
'%',
'u',
'.',
'*',
'.',
'*',
'_',
3224 '%',
's',
'_',
'*',
'.',
'm',
'a',
'n',
'i',
'f',
'e',
's',
't',0};
3225 static const WCHAR wine_trailerW[] = {
'd',
'e',
'a',
'd',
'b',
'e',
'e',
'f',
'.',
'm',
'a',
'n',
'i',
'f',
'e',
's',
't'};
3231 unsigned int data_pos = 0, data_len,
len;
3248 ULONG build, revision;
3250 data_len =
io.Information;
3254 if (data_pos >= data_len)
3259 data_len =
io.Information;
3265 else data_pos = data_len;
3269 if (build < min_build)
continue;
3270 tmp =
wcschr(tmp,
'.') + 1;
3272 if (build == min_build && revision < min_revision)
continue;
3273 tmp =
wcschr(tmp,
'_') + 1;
3274 tmp =
wcschr(tmp,
'_') + 1;
3285 min_revision = revision;
3288 ai->
version.revision = revision;
3297 else WARN(
"no matching file for %S\n",
lookup);
3311 static const WCHAR manifest_dirW[] =
3312 {
'\\',
'w',
'i',
'n',
's',
'x',
's',
'\\',
'm',
'a',
'n',
'i',
'f',
'e',
's',
't',
's',0};
3331 attr.RootDirectory = 0;
3333 attr.ObjectName = &path_us;
3335 attr.SecurityQualityOfService =
NULL;
3359 path[path_us.Length/
sizeof(
WCHAR)] =
'\\';
3379 static const WCHAR dotDllW[] = {
'.',
'd',
'l',
'l',0};
3387 TRACE(
"looking for name=%S version=%u.%u.%u.%u arch=%S\n",
3418 for (
i = 0;
i < 4;
i++)
3477 DPRINT1(
"Could not find dependent assembly %S (%u.%u.%u.%u)\n",
3498 if (
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame)
3499 *
handle =
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame->ActivationContext;
3519 else if (!*
handle && (
class != ActivationContextBasicInformation))
3536 for (
i = 0;
i <
actctx->num_assemblies;
i++)
3544 total_len +=
sizeof(*index);
3545 total_len +=
sizeof(*data);
3554 total_len +=
sizeof(*header);
3561 header->size =
sizeof(*header);
3563 header->index_offset =
sizeof(*header);
3567 for (
i = 0;
i <
actctx->num_assemblies;
i++)
3587 index->name_offset = name_offset;
3590 index->data_len =
sizeof(*data);
3591 index->rosterindex =
i + 1;
3595 data->size =
sizeof(*data);
3681 DPRINT(
"actctx->dllredirect_section: %p\n",
actctx->dllredirect_section);
3682 if (!
actctx->dllredirect_section)
3701 data->ulDataFormatVersion = 1;
3705 data->ulSectionGlobalDataLength = 0;
3706 data->lpSectionBase =
actctx->dllredirect_section;
3711 data->ulAssemblyRosterIndex =
index->rosterindex;
3729 unsigned int i,
j,
k, total_len = 0, class_count = 0;
3736 for (
i = 0;
i <
actctx->num_assemblies;
i++)
3742 for (
k = 0;
k <
dll->entities.num;
k++)
3745 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION)
3751 total_len +=
sizeof(*index);
3752 total_len +=
sizeof(*data);
3769 total_len +=
sizeof(*header);
3776 header->size =
sizeof(*header);
3777 header->count = class_count;
3778 header->index_offset =
sizeof(*header);
3782 for (
i = 0;
i <
actctx->num_assemblies;
i++)
3788 for (
k = 0;
k <
dll->entities.num;
k++)
3791 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION)
3793 static const WCHAR exclW[] = {
'!',0};
3794 ULONG versioned_len, module_len;
3809 versioned_len =
str.Length;
3812 index->name_offset = name_offset;
3815 index->data_len =
sizeof(*data) + versioned_len + module_len + 2*
sizeof(
WCHAR) ;
3816 index->rosterindex =
i + 1;
3820 data->size =
sizeof(*data);
3822 data->name_len = versioned_len;
3823 data->name_offset =
sizeof(*data);
3835 ptrW[
data->module_len/
sizeof(
WCHAR)] = 0;
3876 if (!
actctx->wndclass_section)
3891 for (
i = 0;
i <
actctx->wndclass_section->count;
i++)
3914 data->ulDataFormatVersion = 1;
3915 data->lpData =
class;
3917 data->ulLength =
class->size +
class->name_len +
class->module_len + 2*
sizeof(
WCHAR);
3919 data->ulSectionGlobalDataLength = 0;
3920 data->lpSectionBase =
actctx->wndclass_section;
3925 data->ulAssemblyRosterIndex =
index->rosterindex;
3933 unsigned int i,
j,
k, total_len = 0, tlib_count = 0, names_len = 0;
3935 ULONG module_offset, data_offset;
3940 for (
i = 0;
i <
actctx->num_assemblies;
i++)
3946 for (
k = 0;
k <
dll->entities.num;
k++)
3949 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION)
3952 total_len +=
sizeof(*index);
3953 total_len +=
sizeof(*data);
3968 total_len +=
sizeof(*header);
3975 header->size =
sizeof(*header);
3976 header->count = tlib_count;
3979 module_offset =
sizeof(*header);
3982 for (
i = 0;
i <
actctx->num_assemblies;
i++)
3988 for (
k = 0;
k <
dll->entities.num;
k++)
3991 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION)
3993 ULONG module_len, help_len;
4013 index->data_offset = data_offset;
4015 index->rosterindex =
i + 1;
4019 data->size =
sizeof(*data);
4021 data->name_len = module_len;
4022 data->name_offset = module_offset;
4027 data->help_offset =
sizeof(*data);
4044 data_offset +=
sizeof(*data);
4048 module_offset += module_len +
sizeof(
WCHAR);
4073 if (!
actctx->tlib_section)
4089 data->ulDataFormatVersion = 1;
4090 data->lpData = tlib;
4094 data->ulSectionGlobalDataLength =
actctx->tlib_section->names_len;
4100 data->ulAssemblyRosterIndex =
index->rosterindex;
4114 guid->Data3 &= 0x0fff;
4115 guid->Data3 |= (4 << 12);
4116 guid->Data4[0] &= 0x3f;
4117 guid->Data4[0] |= 0x80;
4121 unsigned int *
count,
unsigned int *
len,
unsigned int *module_len)
4125 for (
i = 0;
i < entities->
num;
i++)
4128 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)
4175 for (
i = 0;
i < entities->
num;
i++)
4178 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)
4200 (*index)->data_offset = *data_offset;
4201 (*index)->data_len =
sizeof(*data);
4202 (*index)->rosterindex = rosterindex;
4207 alias_index = (*index) +
section->count/2;
4215 data->size =
sizeof(*data);
4217 data->clsid = (*index)->guid;
4229 data->name_len = module_len;
4230 data->name_offset = *module_offset;
4232 data->progid_offset =
data->progid_len ?
data->size : 0;
4233 data->clrdata_len = 0;
4243 if (
data->miscstatus)
4245 if (
data->miscstatuscontent)
4247 if (
data->miscstatusthumbnail)
4249 if (
data->miscstatusicon)
4251 if (
data->miscstatusdocprint)
4255 if (
data->clrdata_offset)
4259 clrdata->
size =
sizeof(*clrdata);
4260 clrdata->
res[0] = 0;
4261 clrdata->
res[1] = 2;
4268 clrdata->
res2[0] = 0;
4269 clrdata->
res2[1] = 0;
4297 if (
data->progid_len)
4298 data->progid_offset +=
data->clrdata_len;
4299 (*index)->data_len +=
sizeof(*clrdata);
4312 if (
data->progid_len)
4316 ptrW[
data->progid_len/
sizeof(
WCHAR)] = 0;
4331 alias_index->
data_len = (*index)->data_len;
4339 (*data_offset) +=
sizeof(*clrdata);
4351 unsigned int i,
j, total_len = 0, class_count = 0, names_len = 0;
4353 ULONG module_offset, data_offset;
4359 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4371 total_len +=
sizeof(*header);
4378 header->size =
sizeof(*header);
4379 header->count = 2*class_count;
4382 module_offset =
sizeof(*header);
4386 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4424 if (!
actctx->comserver_section)
4440 data->ulDataFormatVersion = 1;
4441 data->lpData = comclass;
4445 data->lpSectionGlobalData = (
BYTE*)
actctx->comserver_section +
actctx->comserver_section->names_offset;
4446 data->ulSectionGlobalDataLength =
actctx->comserver_section->names_len;
4447 data->lpSectionBase =
actctx->comserver_section;
4452 data->ulAssemblyRosterIndex =
index->rosterindex;
4461 for (
i = 0;
i < entities->
num;
i++)
4464 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION)
4479 for (
i = 0;
i < entities->
num;
i++)
4482 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION)
4499 (*index)->data_offset = *data_offset;
4501 (*index)->rosterindex = rosterindex;
4504 data->size =
sizeof(*data);
4517 data->iid = (*index)->guid;
4542 data->name_offset =
data->name_len ?
sizeof(*data) : 0;
4554 *data_offset +=
sizeof(*data);
4565 unsigned int i,
j, total_len = 0,
count = 0;
4571 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4583 total_len +=
sizeof(*header);
4590 header->size =
sizeof(*header);
4592 header->index_offset =
sizeof(*header);
4596 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4637 if (!
actctx->ifaceps_section)
4653 data->ulDataFormatVersion = 1;
4654 data->lpData = iface;
4657 data->ulSectionGlobalDataLength = 0;
4658 data->lpSectionBase =
actctx->ifaceps_section;
4663 data->ulAssemblyRosterIndex =
index->rosterindex;
4670 unsigned int i,
j, total_len = 0,
count = 0;
4677 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4683 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES)
4687 total_len +=
sizeof(*index) +
sizeof(*data);
4698 total_len +=
sizeof(*header);
4705 header->size =
sizeof(*header);
4707 header->index_offset =
sizeof(*header);
4711 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4717 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES)
4719 ULONG version_len, name_len;
4739 index->data_offset = data_offset;
4741 index->rosterindex =
i + 1;
4745 data->size =
sizeof(*data);
4761 if (
data->version_len)
4765 ptrW[
data->version_len/
sizeof(
WCHAR)] = 0;
4768 data_offset +=
index->data_offset;
4791 if (!
actctx->clrsurrogate_section)
4807 data->ulDataFormatVersion = 1;
4808 data->lpData = surrogate;
4815 data->ulSectionGlobalDataLength = 0;
4816 data->lpSectionBase =
actctx->clrsurrogate_section;
4821 data->ulAssemblyRosterIndex =
index->rosterindex;
4828 unsigned int i,
j, single_len;
4831 for (
i = 0;
i < entities->
num;
i++)
4834 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)
4865 (*index)->name_offset = *data_offset;
4866 (*index)->name_len =
str.Length;
4868 (*index)->data_len =
sizeof(*data);
4869 (*index)->rosterindex = rosterindex;
4875 data->size =
sizeof(*data);
4877 data->clsid_offset = *global_offset;
4882 ptrW[(*index)->name_len/
sizeof(
WCHAR)] = 0;
4889 *global_offset +=
sizeof(
GUID);
4890 *data_offset +=
data->size;
4900 for (
i = 0;
i < entities->
num;
i++)
4903 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)
4933 unsigned int i,
j, total_len = 0,
count = 0;
4940 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4952 total_len +=
sizeof(*header);
4959 header->size =
sizeof(*header);
4967 global_offset =
header->global_offset;
4969 for (
i = 0;
i <
actctx->num_assemblies;
i++)
5010 if (!
actctx->comserver_section)
5021 if (!
actctx->progid_section)
5039 data->ulDataFormatVersion = 1;
5042 data->lpSectionGlobalData = (
BYTE*)
actctx->progid_section +
actctx->progid_section->global_offset;
5043 data->ulSectionGlobalDataLength =
actctx->progid_section->global_len;
5044 data->lpSectionBase =
actctx->progid_section;
5049 data->ulAssemblyRosterIndex =
index->rosterindex;
5061 switch (section_kind)
5064 case ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION:
5065 DPRINT1(
"Unsupported yet section_kind %x\n", section_kind);
5068 case ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION:
5071 case ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION:
5074 case ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION:
5077 case ACTIVATION_CONTEXT_SECTION_GLOBAL_OBJECT_RENAME_TABLE:
5078 FIXME(
"Unsupported yet section_kind %x\n", section_kind);
5081 WARN(
"Unknown section_kind %x\n", section_kind);
5087 if (
data && (
flags & FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX))
5100 switch (section_kind)
5102 case ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION:
5105 case ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION:
5108 case ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION:
5111 case ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES:
5115 WARN(
"Unknown section_kind %x\n", section_kind);
5121 if (
flags & FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX)
5133 for (
i = 0;
i <
actctx->num_assemblies;
i++)
5139 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_APPLICATION_SETTINGS &&
5156 ctx.cbSize =
sizeof(
ctx);
5158 ctx.dwFlags = ACTCTX_FLAG_RESOURCE_NAME_VALID | ACTCTX_FLAG_HMODULE_VALID;
5159 ctx.hModule =
NtCurrentTeb()->ProcessEnvironmentBlock->ImageBaseAddress;
5186 DPRINT1(
"Failed to create the implicit act ctx. Status: 0x%x!!!\n",
Status);
5205 IN PACTIVATION_CONTEXT_DATA ActivationContextData,
5211 const ACTCTXW *pActCtx = (
PVOID)ActivationContextData;
5213 PACTIVATION_CONTEXT_WRAPPED ActualActCtx;
5221 TRACE(
"%p %08x\n", pActCtx, pActCtx ? pActCtx->dwFlags : 0);
5223 if (!pActCtx || pActCtx->cbSize <
sizeof(*pActCtx) ||
5233 actctx = &ActualActCtx->ActivationContext;
5235 actctx->config.type = ACTIVATION_CONTEXT_PATH_TYPE_NONE;
5237 actctx->appdir.type = ACTIVATION_CONTEXT_PATH_TYPE_WIN32_FILE;
5238 if (pActCtx->dwFlags & ACTCTX_FLAG_APPLICATION_NAME_VALID)
5248 if (pActCtx->dwFlags & ACTCTX_FLAG_HMODULE_VALID)
module = pActCtx->hModule;
5260 if (pActCtx->lpSource && !((pActCtx->dwFlags & ACTCTX_FLAG_RESOURCE_NAME_VALID) &&
5261 (pActCtx->dwFlags & ACTCTX_FLAG_HMODULE_VALID)))
5266 if (pActCtx->dwFlags & ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID &&
5269 DWORD dir_len, source_len;
5271 dir_len =
wcslen(pActCtx->lpAssemblyDirectory);
5272 source_len =
wcslen(pActCtx->lpSource);
5304 if (pActCtx->dwFlags & ACTCTX_FLAG_LANGID_VALID)
lang = pActCtx->wLangId;
5305 if (pActCtx->dwFlags & ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID)
directory = pActCtx->lpAssemblyDirectory;
5307 if (pActCtx->dwFlags & ACTCTX_FLAG_RESOURCE_NAME_VALID)
5310 if (pActCtx->dwFlags & ACTCTX_FLAG_HMODULE_VALID)
5313 pActCtx->lpResourceName,
lang );
5317 pActCtx->hModule, pActCtx->lpResourceName );
5319 else if (pActCtx->lpSource && pActCtx->lpResourceName)
5322 file, pActCtx->lpResourceName,
lang );
5325 NULL, pActCtx->lpResourceName );
5352#define ACT_CTX_VALID(p) ((((ULONG_PTR)p - 1) | 7) != -1)
5359 LONG OldRefCount, NewRefCount;
5363 RtlpValidateActCtx(
ActCtx);
5367 OldRefCount =
ActCtx->RefCount;
5370 if (OldRefCount ==
LONG_MAX)
break;
5372 NewRefCount = OldRefCount + 1;
5375 OldRefCount) == OldRefCount)
5394 RtlpValidateActCtx(
ActCtx);
5461 DPRINT(
"ActiveSP %p: ACTIVATE (ActiveFrame %p -> NewFrame %p, Context %p)\n",
5493 DPRINT(
"ActiveSP %p: DEACTIVATE (ActiveFrame %p -> PreviousFrame %p)\n",
5495 NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame,
5501 while (
top !=
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame)
5523 ActiveFrame =
Stack->ActiveFrame;
5531 ActiveFrame = PrevFrame;
5551 RtlFreeActivationContextStack(
NtCurrentTeb()->ActivationContextStackPointer);
5556 frame =
NtCurrentTeb()->ActivationContextStack.ActiveFrame;
5574 if (
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame)
5576 *
handle =
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame->ActivationContext;
5593 for (frame =
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame; frame; frame = frame->
Previous)
5615 if (retlen) *retlen = 0;
5620 case ActivationContextBasicInformation:
5622 ACTIVATION_CONTEXT_BASIC_INFORMATION *
info =
buffer;
5624 if (retlen) *retlen =
sizeof(*info);
5633 case ActivationContextDetailedInformation:
5635 ACTIVATION_CONTEXT_DETAILED_INFORMATION *acdi =
buffer;
5637 SIZE_T len, manifest_len = 0, config_len = 0, appdir_len = 0;
5648 len =
sizeof(*acdi) + (manifest_len + config_len + appdir_len) *
sizeof(
WCHAR);
5650 if (retlen) *retlen =
len;
5654 acdi->ulFormatVersion =
assembly ? 1 : 0;
5655 acdi->ulAssemblyCount =
actctx->num_assemblies;
5658 acdi->ulRootConfigurationPathType =
actctx->config.type;
5659 acdi->ulRootConfigurationPathChars =
actctx->config.info ? config_len - 1 : 0;
5660 acdi->ulAppDirPathType =
actctx->appdir.type;
5661 acdi->ulAppDirPathChars =
actctx->appdir.info ? appdir_len - 1 : 0;
5665 acdi->lpRootManifestPath =
ptr;
5667 ptr += manifest_len;
5669 else acdi->lpRootManifestPath =
NULL;
5672 acdi->lpRootConfigurationPath =
ptr;
5676 else acdi->lpRootConfigurationPath =
NULL;
5679 acdi->lpAppDirPath =
ptr;
5682 else acdi->lpAppDirPath =
NULL;
5686 case AssemblyDetailedInformationInActivationContext:
5688 ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION *afdi =
buffer;
5704 id_len =
wcslen(assembly_id) + 1;
5713 if (retlen) *retlen =
len;
5721 afdi->ulEncodedAssemblyIdentityLength = (id_len - 1) *
sizeof(
WCHAR);
5725 afdi->ulPolicyPathType = ACTIVATION_CONTEXT_PATH_TYPE_NONE;
5726 afdi->ulPolicyPathLength = 0;
5728 afdi->ulMetadataSatelliteRosterIndex = 0;
5729 afdi->ulManifestVersionMajor = 1;
5730 afdi->ulManifestVersionMinor = 0;
5731 afdi->ulPolicyVersionMajor = 0;
5732 afdi->ulPolicyVersionMinor = 0;
5733 afdi->ulAssemblyDirectoryNameLength = ad_len ? (ad_len - 1) *
sizeof(
WCHAR) : 0;
5735 afdi->lpAssemblyEncodedAssemblyIdentity =
ptr;
5740 afdi->lpAssemblyManifestPath =
ptr;
5743 }
else afdi->lpAssemblyManifestPath =
NULL;
5744 afdi->lpAssemblyPolicyPath =
NULL;
5747 afdi->lpAssemblyDirectoryName =
ptr;
5750 else afdi->lpAssemblyDirectoryName =
NULL;
5755 case FileInformationInAssemblyOfAssemblyInActivationContext:
5757 const ACTIVATION_CONTEXT_QUERY_INDEX *acqi = subinst;
5758 ASSEMBLY_FILE_DETAILED_INFORMATION *afdi =
buffer;
5767 if (acqi->ulAssemblyIndex >=
actctx->num_assemblies)
5776 len =
sizeof(*afdi) + dll_len *
sizeof(
WCHAR);
5780 if (retlen) *retlen =
len;
5783 if (retlen) *retlen = 0;
5784 afdi->ulFlags = ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION;
5785 afdi->ulFilenameLength = dll_len ? (dll_len - 1) *
sizeof(
WCHAR) : 0;
5786 afdi->ulPathLength = 0;
5790 afdi->lpFileName =
ptr;
5792 }
else afdi->lpFileName =
NULL;
5793 afdi->lpFilePath =
NULL;
5797 case CompatibilityInformationInActivationContext:
5800 COMPATIBILITY_CONTEXT_ELEMENT *elements;
5813 if (retlen) *retlen =
len;
5817 elements = (COMPATIBILITY_CONTEXT_ELEMENT*)(acci + 1);
5825 case RunlevelInformationInActivationContext:
5827 ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION *acrli =
buffer;
5833 len =
sizeof(*acrli);
5834 if (retlen) *retlen =
len;
5847 FIXME(
"class %u not implemented\n",
class );
5856RtlQueryInformationActiveActivationContext(
ULONG ulInfoClass,
5867 pcbWrittenOrRequired);
5870#define FIND_ACTCTX_RETURN_FLAGS 0x00000002
5871#define FIND_ACTCTX_RETURN_ASSEMBLY_METADATA 0x00000004
5872#define FIND_ACTCTX_VALID_MASK (FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX | FIND_ACTCTX_RETURN_FLAGS | FIND_ACTCTX_RETURN_ASSEMBLY_METADATA)
5880 if (!section_name || !section_name->
Buffer ||
5881 (
flags & ~FIND_ACTCTX_VALID_MASK) ||
5882 ((
flags & FIND_ACTCTX_VALID_MASK) && !
data) ||
5883 (
data &&
data->cbSize <
offsetof(ACTCTX_SECTION_KEYED_DATA, ulAssemblyRosterIndex)))
5885 DPRINT1(
"invalid parameter\n");
5890 if (
flags & FIND_ACTCTX_RETURN_FLAGS ||
5891 flags & FIND_ACTCTX_RETURN_ASSEMBLY_METADATA)
5913 DPRINT(
"RtlFindActivationContextSectionString(%x %p %x %wZ %p)\n",
flags,
guid, section_kind, section_name,
ptr);
5914 status = RtlpFindActivationContextSection_CheckParameters(
flags,
guid, section_kind, section_name,
data);
5917 DPRINT1(
"RtlFindActivationContextSectionString() failed with status %x\n",
status);
5927 DPRINT(
"RtlFindActivationContextSectionString() failed with status %x\n",
status);
5934 DPRINT(
"ActiveFrame: %p\n",
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame);
5935 if (
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame)
5948 DPRINT(
"RtlFindActivationContextSectionString() returns status %x\n",
status);
5961 ACTCTX_SECTION_KEYED_DATA *
data =
ptr;
5966 FIXME(
"expected extguid == NULL\n");
5970 if (
flags & ~FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX)
5979 if (
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame)
6026 if (written) *written =
wcslen(
res) + 1;
6052 ContextStack->
Flags = 0;
6058 *
Stack = ContextStack;
6065RtlActivateActivationContextUnsafeFast(
IN PRTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED Frame,
6072 ActiveFrame =
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame;
6074 DPRINT(
"ActiveSP %p: ACTIVATE (ActiveFrame %p -> NewFrame %p, Context %p)\n",
6075 NtCurrentTeb()->ActivationContextStackPointer, ActiveFrame,
6080 ASSERT(Frame->Size >=
sizeof(RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_BASIC));
6083 if (Frame->Size >=
sizeof(RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED))
6104 NewFrame = &Frame->Frame;
6107 Frame->Frame.
Previous = ActiveFrame;
6116 DPRINT(
"Setting new active frame %p instead of old %p\n", NewFrame, ActiveFrame);
6117 NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame = NewFrame;
6122 DPRINT(
"Trying to activate already activated activation context\n");
6126 if (!RtlpNotAllowingMultipleActivation)
6129 NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame = NewFrame;
6133 NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame = NewFrame;
6142RtlDeactivateActivationContextUnsafeFast(
IN PRTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED Frame)
6146 ActiveFrame =
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame;
6150 ASSERT(Frame->Size >=
sizeof(RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_BASIC));
6158 if (Frame->Size >=
sizeof(RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED))
6173 DPRINT1(
"Deactivating not really activated activation context\n");
6175 return &Frame->Frame;
6179 NewFrame = &Frame->Frame;
6180 if (ActiveFrame != NewFrame)
6182 DPRINT1(
"Deactivating wrong active frame: %p != %p\n", ActiveFrame, NewFrame);
6185 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
struct mke2fs_defaults settings[]
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)
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#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 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)
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)
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
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_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 RtlUTF8ToUnicodeN
#define offsetof(TYPE, MEMBER)
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
_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)
_CRTIMP wchar_t *__cdecl wcscat(_Inout_updates_z_(_String_length_(_Dest)+_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
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[]
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 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 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[]
void actctx_init(PVOID *pOldShimData)
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 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)
#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[]
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
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
struct entity::@4973::@4978 clrsurrogate
struct entity::@4973::@4977 class
DWORD miscstatusthumbnail
struct entity::@4973::@4976 ifaceps
struct entity::@4973::@4979 settings
struct entity::@4973::@4974 typelib
struct entity::@4973::@4975 comclass
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
_Must_inspect_result_ _In_ ULONG Flags
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
#define RtlUshortByteSwap(_x)