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 user_shared_data SharedUserData
39#undef CREATEPROCESS_MANIFEST_RESOURCE_ID
41BOOLEAN RtlpNotAllowingMultipleActivation;
45#define ACTCTX_FLAGS_ALL (\
46 ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID |\
47 ACTCTX_FLAG_LANGID_VALID |\
48 ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID |\
49 ACTCTX_FLAG_RESOURCE_NAME_VALID |\
50 ACTCTX_FLAG_SET_PROCESS_DEFAULT |\
51 ACTCTX_FLAG_APPLICATION_NAME_VALID |\
52 ACTCTX_FLAG_SOURCE_IS_ASSEMBLYREF |\
53 ACTCTX_FLAG_HMODULE_VALID )
55#define ACTCTX_MAGIC 0xC07E3E11
56#define STRSECTION_MAGIC 0x64487353
57#define GUIDSECTION_MAGIC 0x64487347
59#define ACTCTX_MAGIC_MARKER (PVOID)'gMcA'
61#define ACTCTX_FAKE_HANDLE ((HANDLE) 0xf00baa)
62#define ACTCTX_FAKE_COOKIE ((ULONG_PTR) 0xf00bad)
65#define RT_MANIFEST ((ULONG_PTR)24)
66#define CREATEPROCESS_MANIFEST_RESOURCE_ID ((ULONG_PTR)1)
105#define MAX_NAMESPACES 64
553typedef struct _ASSEMBLY_STORAGE_MAP_ENTRY
558} ASSEMBLY_STORAGE_MAP_ENTRY, *PASSEMBLY_STORAGE_MAP_ENTRY;
560typedef struct _ASSEMBLY_STORAGE_MAP
564 PASSEMBLY_STORAGE_MAP_ENTRY *AssemblyArray;
565} ASSEMBLY_STORAGE_MAP, *PASSEMBLY_STORAGE_MAP;
574 PACTIVATION_CONTEXT_DATA ActivationContextData;
575 PVOID NotificationRoutine;
577 ULONG SentNotifications[8];
578 ULONG DisabledNotifications[8];
579 ASSEMBLY_STORAGE_MAP StorageMap;
580 PASSEMBLY_STORAGE_MAP_ENTRY InlineStorageMapEntries;
581 ULONG StackTraceIndex;
582 PVOID StackTraces[4][4];
615#elif defined __x86_64__
619#elif defined __aarch64__
625static 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};
626static 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};
627static 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};
630typedef struct _ACTIVATION_CONTEXT_WRAPPED
634} ACTIVATION_CONTEXT_WRAPPED, *PACTIVATION_CONTEXT_WRAPPED;
662 PACTIVATION_CONTEXT_WRAPPED pActual;
666 ACTIVATION_CONTEXT_WRAPPED,
673 DbgPrint(
"%s : Invalid activation context marker %p found in activation context %p\n"
674 " This means someone stepped on the allocation, or someone is using a\n"
675 " deallocated activation context\n",
677 pActual->MagicMarker,
680 RtlpSxsBreakOnInvalidMarker(
ActCtx, 1);
686static const WCHAR assemblyIdentityW[] = {
'a',
's',
's',
'e',
'm',
'b',
'l',
'y',
'I',
'd',
'e',
'n',
't',
'i',
't',
'y',0};
687static const WCHAR bindingRedirectW[] = {
'b',
'i',
'n',
'd',
'i',
'n',
'g',
'R',
'e',
'd',
'i',
'r',
'e',
'c',
't',0};
689static const WCHAR clrSurrogateW[] = {
'c',
'l',
'r',
'S',
'u',
'r',
'r',
'o',
'g',
'a',
't',
'e',0};
691static 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};
692static 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};
693static const WCHAR dependencyW[] = {
'd',
'e',
'p',
'e',
'n',
'd',
'e',
'n',
'c',
'y',0};
694static const WCHAR dependentAssemblyW[] = {
'd',
'e',
'p',
'e',
'n',
'd',
'e',
'n',
't',
'A',
's',
's',
'e',
'm',
'b',
'l',
'y',0};
695static const WCHAR descriptionW[] = {
'd',
'e',
's',
'c',
'r',
'i',
'p',
't',
'i',
'o',
'n',0};
699static const WCHAR noInheritableW[] = {
'n',
'o',
'I',
'n',
'h',
'e',
'r',
'i',
't',
'a',
'b',
'l',
'e',0};
701static const WCHAR windowClassW[] = {
'w',
'i',
'n',
'd',
'o',
'w',
'C',
'l',
'a',
's',
's',0};
708static const WCHAR manifestVersionW[] = {
'm',
'a',
'n',
'i',
'f',
'e',
's',
't',
'V',
'e',
'r',
's',
'i',
'o',
'n',0};
711static const WCHAR newVersionW[] = {
'n',
'e',
'w',
'V',
'e',
'r',
's',
'i',
'o',
'n',0};
712static const WCHAR oldVersionW[] = {
'o',
'l',
'd',
'V',
'e',
'r',
's',
'i',
'o',
'n',0};
714static 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};
716static const WCHAR publicKeyTokenW[] = {
'p',
'u',
'b',
'l',
'i',
'c',
'K',
'e',
'y',
'T',
'o',
'k',
'e',
'n',0};
717static const WCHAR threadingmodelW[] = {
't',
'h',
'r',
'e',
'a',
'd',
'i',
'n',
'g',
'M',
'o',
'd',
'e',
'l',0};
725static const WCHAR restrictedW[] = {
'R',
'E',
'S',
'T',
'R',
'I',
'C',
'T',
'E',
'D',0};
728static const WCHAR hasdiskimageW[] = {
'H',
'A',
'S',
'D',
'I',
'S',
'K',
'I',
'M',
'A',
'G',
'E',0};
730static const WCHAR miscstatusW[] = {
'm',
'i',
's',
'c',
'S',
't',
'a',
't',
'u',
's',0};
731static const WCHAR miscstatusiconW[] = {
'm',
'i',
's',
'c',
'S',
't',
'a',
't',
'u',
's',
'I',
'c',
'o',
'n',0};
732static const WCHAR miscstatuscontentW[] = {
'm',
'i',
's',
'c',
'S',
't',
'a',
't',
'u',
's',
'C',
'o',
'n',
't',
'e',
'n',
't',0};
733static const WCHAR miscstatusthumbnailW[] = {
'm',
'i',
's',
'c',
'S',
't',
'a',
't',
'u',
's',
'T',
'h',
'u',
'm',
'b',
'n',
'a',
'i',
'l',0};
734static const WCHAR miscstatusdocprintW[] = {
'm',
'i',
's',
'c',
'S',
't',
'a',
't',
'u',
's',
'D',
'o',
'c',
'P',
'r',
'i',
'n',
't',0};
735static const WCHAR baseInterfaceW[] = {
'b',
'a',
's',
'e',
'I',
'n',
't',
'e',
'r',
'f',
'a',
'c',
'e',0};
736static const WCHAR nummethodsW[] = {
'n',
'u',
'm',
'M',
'e',
't',
'h',
'o',
'd',
's',0};
737static const WCHAR proxyStubClsid32W[] = {
'p',
'r',
'o',
'x',
'y',
'S',
't',
'u',
'b',
'C',
'l',
's',
'i',
'd',
'3',
'2',0};
738static const WCHAR runtimeVersionW[] = {
'r',
'u',
'n',
't',
'i',
'm',
'e',
'V',
'e',
'r',
's',
'i',
'o',
'n',0};
739static const WCHAR mscoreeW[] = {
'M',
'S',
'C',
'O',
'R',
'E',
'E',
'.',
'D',
'L',
'L',0};
740static const WCHAR mscoree2W[] = {
'm',
's',
'c',
'o',
'r',
'e',
'e',
'.',
'd',
'l',
'l',0};
742static const WCHAR activatewhenvisibleW[] = {
'a',
'c',
't',
'i',
'v',
'a',
't',
'e',
'w',
'h',
'e',
'n',
'v',
'i',
's',
'i',
'b',
'l',
'e',0};
743static const WCHAR actslikebuttonW[] = {
'a',
'c',
't',
's',
'l',
'i',
'k',
'e',
'b',
'u',
't',
't',
'o',
'n',0};
744static const WCHAR actslikelabelW[] = {
'a',
'c',
't',
's',
'l',
'i',
'k',
'e',
'l',
'a',
'b',
'e',
'l',0};
747static const WCHAR canlinkbyole1W[] = {
'c',
'a',
'n',
'l',
'i',
'n',
'k',
'b',
'y',
'o',
'l',
'e',
'1',0};
748static const WCHAR cantlinkinsideW[] = {
'c',
'a',
'n',
't',
'l',
'i',
'n',
'k',
'i',
'n',
's',
'i',
'd',
'e',0};
749static 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};
751static const WCHAR insertnotreplaceW[] = {
'i',
'n',
's',
'e',
'r',
't',
'n',
'o',
't',
'r',
'e',
'p',
'l',
'a',
'c',
'e',0};
753static const WCHAR invisibleatruntimeW[] = {
'i',
'n',
'v',
'i',
's',
'i',
'b',
'l',
'e',
'a',
't',
'r',
'u',
'n',
't',
'i',
'm',
'e',0};
754static const WCHAR islinkobjectW[] = {
'i',
's',
'l',
'i',
'n',
'k',
'o',
'b',
'j',
'e',
'c',
't',0};
755static const WCHAR nouiactivateW[] = {
'n',
'o',
'u',
'i',
'a',
'c',
't',
'i',
'v',
'a',
't',
'e',0};
756static const WCHAR onlyiconicW[] = {
'o',
'n',
'l',
'y',
'i',
'c',
'o',
'n',
'i',
'c',0};
757static const WCHAR recomposeonresizeW[] = {
'r',
'e',
'c',
'o',
'm',
'p',
'o',
's',
'e',
'o',
'n',
'r',
'e',
's',
'i',
'z',
'e',0};
758static 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};
759static const WCHAR setclientsitefirstW[] = {
's',
'e',
't',
'c',
'l',
'i',
'e',
'n',
't',
's',
'i',
't',
'e',
'f',
'i',
'r',
's',
't',0};
760static const WCHAR simpleframeW[] = {
's',
'i',
'm',
'p',
'l',
'e',
'f',
'r',
'a',
'm',
'e',0};
762static 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};
763static const WCHAR wantstomenumergeW[] = {
'w',
'a',
'n',
't',
's',
't',
'o',
'm',
'e',
'n',
'u',
'm',
'e',
'r',
'g',
'e',0};
765static const WCHAR compatibilityW[] = {
'c',
'o',
'm',
'p',
'a',
't',
'i',
'b',
'i',
'l',
'i',
't',
'y',0};
766static 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};
767static const WCHAR applicationW[] = {
'a',
'p',
'p',
'l',
'i',
'c',
'a',
't',
'i',
'o',
'n',0};
768static const WCHAR supportedOSW[] = {
's',
'u',
'p',
'p',
'o',
'r',
't',
'e',
'd',
'O',
'S',0};
770static 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};
771static const WCHAR requestedPrivilegesW[] = {
'r',
'e',
'q',
'u',
'e',
's',
't',
'e',
'd',
'P',
'r',
'i',
'v',
'i',
'l',
'e',
'g',
'e',
's',0};
774static const WCHAR windowsSettingsW[] = {
'w',
'i',
'n',
'd',
'o',
'w',
's',
'S',
'e',
't',
't',
'i',
'n',
'g',
's',0};
775static const WCHAR autoElevateW[] = {
'a',
'u',
't',
'o',
'E',
'l',
'e',
'v',
'a',
't',
'e',0};
776static const WCHAR disableThemingW[] = {
'd',
'i',
's',
'a',
'b',
'l',
'e',
'T',
'h',
'e',
'm',
'i',
'n',
'g',0};
777static 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};
778static 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};
779static 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};
780static 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};
781static 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};
783static const WCHAR dpiAwarenessW[] = {
'd',
'p',
'i',
'A',
'w',
'a',
'r',
'e',
'n',
'e',
's',
's',0};
784static const WCHAR gdiScalingW[] = {
'g',
'd',
'i',
'S',
'c',
'a',
'l',
'i',
'n',
'g',0};
785static 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};
786static const WCHAR longPathAwareW[] = {
'l',
'o',
'n',
'g',
'P',
'a',
't',
'h',
'A',
'w',
'a',
'r',
'e',0};
787static const WCHAR magicFutureSettingW[] = {
'm',
'a',
'g',
'i',
'c',
'F',
'u',
't',
'u',
'r',
'e',
'S',
'e',
't',
't',
'i',
'n',
'g',0};
788static 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};
789static 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};
826static const WCHAR version_formatW[] = {
'%',
'u',
'.',
'%',
'u',
'.',
'%',
'u',
'.',
'%',
'u',0};
895 return (ch ==
' ' || ch ==
'\r' || ch ==
'\n' || ch ==
'\t');
914 DPRINT(
"add_assembly() actctx %p, activeframe ??\n",
actctx);
916 if (
actctx->num_assemblies ==
actctx->allocated_assemblies)
919 unsigned int new_count;
922 new_count =
actctx->allocated_assemblies * 2;
933 actctx->allocated_assemblies = new_count;
948 unsigned int new_count;
975 new_count *
sizeof(COMPATIBILITY_CONTEXT_ELEMENT) );
1002 unsigned int new_count;
1005 new_count =
array->allocated * 2;
1007 array->base, new_count *
sizeof(*
array->base) );
1016 array->allocated = new_count;
1031 case ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION:
1041 case ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION:
1048 case ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION:
1052 case ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION:
1055 case ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES:
1069 if (!str1)
return !str2;
1070 return str2 && !
strcmpiW( str1, str2 );
1103 TRACE(
"reusing existing assembly for %S arch %S version %u.%u.%u.%u\n",
1112 TRACE(
"reusing existing dependency for %S arch %S version %u.%u.%u.%u\n",
1121 unsigned int new_count;
1152 static const WCHAR undW[] = {
'_',0};
1153 static const WCHAR noneW[] = {
'n',
'o',
'n',
'e',0};
1154 static const WCHAR mskeyW[] = {
'd',
'e',
'a',
'd',
'b',
'e',
'e',
'f',0};
1198 {
',',
'p',
'r',
'o',
'c',
'e',
's',
's',
'o',
'r',
'A',
'r',
'c',
'h',
'i',
't',
'e',
'c',
't',
'u',
'r',
'e',
'=',0};
1199 static const WCHAR public_keyW[] =
1200 {
',',
'p',
'u',
'b',
'l',
'i',
'c',
'K',
'e',
'y',
'T',
'o',
'k',
'e',
'n',
'=',0};
1201 static const WCHAR typeW2[] =
1202 {
',',
't',
'y',
'p',
'e',
'=',0};
1203 static const WCHAR versionW2[] =
1204 {
',',
'v',
'e',
'r',
's',
'i',
'o',
'n',
'=',0};
1232 PACTIVATION_CONTEXT_WRAPPED pActual;
1245 DPRINT1(
"Invalid activation context handle!\n");
1258 PACTIVATION_CONTEXT_WRAPPED pActual;
1264 for (
i = 0;
i <
actctx->num_assemblies;
i++)
1293 pActual->MagicMarker = 0;
1337 for (
i = xmlbuf->
ns_pos - 1;
i >= 0;
i--)
1359 if (*xmlbuf->
ptr ==
'/')
1362 if (xmlbuf->
ptr == xmlbuf->
end || *xmlbuf->
ptr !=
'>')
1370 if (*xmlbuf->
ptr ==
'>')
1405 xmlbuf->
ptr = xmlbuf->
end;
1449 for (
ptr = xmlbuf->
ptr; ptr < xmlbuf->
end;
ptr++)
if (*
ptr ==
'<')
break;
1452 xmlbuf->
ptr = xmlbuf->
end;
1456 if (
ptr + 3 < xmlbuf->
end &&
ptr[0] ==
'!' &&
ptr[1] ==
'-' &&
ptr[2] ==
'-')
1459 if (
ptr[0] ==
'-' &&
ptr[1] ==
'-' &&
ptr[2] ==
'>')
break;
1461 if (
ptr + 3 > xmlbuf->
end)
1463 xmlbuf->
ptr = xmlbuf->
end;
1473 if (ptr < xmlbuf->
end && *
ptr ==
'/')
1512 if (
ptr[0] ==
'?' &&
ptr[1] ==
'>')
1536 unsigned int ver[4];
1541 ver[0] = ver[1] = ver[2] = ver[3] =
pos = 0;
1542 for (curr =
str->ptr; curr < str->
ptr +
str->len; curr++)
1544 if (*curr >=
'0' && *curr <=
'9')
1546 ver[
pos] = ver[
pos] * 10 + *curr -
'0';
1547 if (ver[
pos] >= 0x10000)
goto error;
1549 else if (*curr ==
'.')
1639 static const WCHAR apartW[] = {
'A',
'p',
'a',
'r',
't',
'm',
'e',
'n',
't',0};
1640 static const WCHAR neutralW[] = {
'N',
'e',
'u',
't',
'r',
'a',
'l',0};
1641 static const WCHAR freeW[] = {
'F',
'r',
'e',
'e',0};
1642 static const WCHAR bothW[] = {
'B',
'o',
't',
'h',0};
1680 WARN(
"unknown flag %S\n",
str);
1691 while (i < value->
len)
1720 if (!new_progids)
return FALSE;
1752 if (!(
entity =
add_entity(&
dll->entities, ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)))
1829 for (curr =
str->ptr; curr < str->
ptr +
str->len; curr++)
1831 if (*curr >=
'0' && *curr <=
'9')
1832 num =
num * 10 + *curr -
'0';
1858 if (!(
entity =
add_entity(entities, ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)))
1879 if (!(
entity =
add_entity(&
dll->entities, ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION)))
1936 while (i < value->
len)
1965 unsigned int ver[2];
1970 ver[0] = ver[1] =
pos = 0;
1971 for (curr =
str->ptr; curr < str->
ptr +
str->len; curr++)
1973 if (*curr >=
'0' && *curr <=
'9')
1975 ver[
pos] = ver[
pos] * 10 + *curr -
'0';
1976 if (ver[
pos] >= 0x10000)
goto error;
1978 else if (*curr ==
'.')
1999 if (!(
entity =
add_entity(&
dll->entities, ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION)))
2031 return (
len + 3) & ~3;
2036 static const WCHAR fmtW[] = {
'%',
'u',
'.',
'%',
'u',
'.',
'%',
'u',
'.',
'%',
'u',0};
2053 if (!(
entity =
add_entity(&
dll->entities, ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION)))
2275 memset(&ai, 0,
sizeof(ai));
2280 static const WCHAR allowDelayedBindingW[] = {
'a',
'l',
'l',
'o',
'w',
'D',
'e',
'l',
'a',
'y',
'e',
'd',
'B',
'i',
'n',
'd',
'i',
'n',
'g',0};
2281 static const WCHAR trueW[] = {
't',
'r',
'u',
'e',0};
2380 static const WCHAR sha1W[] = {
'S',
'H',
'A',
'1',0};
2432 COMPATIBILITY_CONTEXT_ELEMENT *compat;
2445 compat->Type = ACTCTX_COMPATIBILITY_ELEMENT_TYPE_OS;
2446 compat->Id = compat_id;
2572 static const WCHAR levelW[] = {
'l',
'e',
'v',
'e',
'l',0};
2573 static const WCHAR asInvokerW[] = {
'a',
's',
'I',
'n',
'v',
'o',
'k',
'e',
'r',0};
2574 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};
2575 static const WCHAR highestAvailableW[] = {
'h',
'i',
'g',
'h',
'e',
's',
't',
'A',
'v',
'a',
'i',
'l',
'a',
'b',
'l',
'e',0};
2576 static const WCHAR uiAccessW[] = {
'u',
'i',
'A',
'c',
'c',
'e',
's',
's',0};
2577 static const WCHAR falseW[] = {
'f',
'a',
'l',
's',
'e',0};
2578 static const WCHAR trueW[] = {
't',
'r',
'u',
'e',0};
2681 static const WCHAR v10W[] = {
'1',
'.',
'0',0};
2739 if (!xmlbuf->
error && expected_ai)
2810 if (xmlbuf->
ptr != xmlbuf->
end)
2836 : ACTIVATION_CONTEXT_PATH_TYPE_NONE;
2855 xmlbuf.
ptr = new_buff;
2869 DPRINT1(
"RtlMultiByteToUnicodeSize failed with %lx\n",
status);
2880 DPRINT1(
"RtlMultiByteToUnicodeN failed with %lx\n",
status);
2884 xmlbuf.
ptr = new_buff;
2898 attr.RootDirectory = 0;
2902 attr.SecurityQualityOfService =
NULL;
2952 else TRACE(
"looking for res %s in module %p %s\n",
debugstr_w(resname),
2966 else if (resname[0] ==
'#')
2997 void *
root,
int want_dir );
3001 void *
root,
int want_dir )
3006 for (
pos =
dir->NumberOfNamedEntries; pos < dir->NumberOfNamedEntries +
dir->NumberOfIdEntries;
pos++)
3008 if (!
entry[
pos].DataIsDirectory == !want_dir)
3034 if (!(
ptr = find_first_id_entry(resdirptr,
root, 1)))
3062 WCHAR resnameBuf[20];
3068 resptr = resnameBuf;
3074 attr.RootDirectory = 0;
3078 attr.SecurityQualityOfService =
NULL;
3123 attr.RootDirectory = 0;
3127 attr.SecurityQualityOfService =
NULL;
3154 static const WCHAR fmtW[] = {
'.',
'%',
'l',
'u',0 };
3163 TRACE(
"looking for manifest associated with %S id %lu\n",
filename, resid );
3202 static const WCHAR lookup_fmtW[] =
3203 {
'%',
's',
'_',
'%',
's',
'_',
'%',
's',
'_',
'%',
'u',
'.',
'%',
'u',
'.',
'*',
'.',
'*',
'_',
3204 '%',
's',
'_',
'*',
'.',
'm',
'a',
'n',
'i',
'f',
'e',
's',
't',0};
3205 static const WCHAR wine_trailerW[] = {
'd',
'e',
'a',
'd',
'b',
'e',
'e',
'f',
'.',
'm',
'a',
'n',
'i',
'f',
'e',
's',
't'};
3211 unsigned int data_pos = 0, data_len;
3217 +
sizeof(lookup_fmtW) )))
3231 ULONG build, revision;
3233 data_len =
io.Information;
3237 if (data_pos >= data_len)
3242 data_len =
io.Information;
3248 else data_pos = data_len;
3252 if (build < min_build)
continue;
3254 revision =
atoiW(tmp);
3255 if (build == min_build && revision < min_revision)
continue;
3259 !
memicmpW( tmp, wine_trailerW,
sizeof(wine_trailerW) /
sizeof(
WCHAR) ))
3268 min_revision = revision;
3271 ai->
version.revision = revision;
3280 else WARN(
"no matching file for %S\n",
lookup);
3294 static const WCHAR manifest_dirW[] =
3295 {
'\\',
'w',
'i',
'n',
's',
'x',
's',
'\\',
'm',
'a',
'n',
'i',
'f',
'e',
's',
't',
's',0};
3300 strlenW(user_shared_data->NtSystemRoot) *
sizeof(
WCHAR) )))
3314 attr.RootDirectory = 0;
3316 attr.ObjectName = &path_us;
3318 attr.SecurityQualityOfService =
NULL;
3342 path[path_us.Length/
sizeof(
WCHAR)] =
'\\';
3362 static const WCHAR dotDllW[] = {
'.',
'd',
'l',
'l',0};
3370 TRACE(
"looking for name=%S version=%u.%u.%u.%u arch=%S\n",
3401 for (
i = 0;
i < 4;
i++)
3459 DPRINT1(
"Could not find dependent assembly %S (%u.%u.%u.%u)\n",
3480 if (
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame)
3481 *
handle =
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame->ActivationContext;
3501 else if (!*
handle && (
class != ActivationContextBasicInformation))
3518 for (
i = 0;
i <
actctx->num_assemblies;
i++)
3526 total_len +=
sizeof(*index);
3527 total_len +=
sizeof(*data);
3536 total_len +=
sizeof(*header);
3543 header->size =
sizeof(*header);
3545 header->index_offset =
sizeof(*header);
3549 for (
i = 0;
i <
actctx->num_assemblies;
i++)
3569 index->name_offset = name_offset;
3572 index->data_len =
sizeof(*data);
3573 index->rosterindex =
i + 1;
3577 data->size =
sizeof(*data);
3663 DPRINT(
"actctx->dllredirect_section: %p\n",
actctx->dllredirect_section);
3664 if (!
actctx->dllredirect_section)
3683 data->ulDataFormatVersion = 1;
3687 data->ulSectionGlobalDataLength = 0;
3688 data->lpSectionBase =
actctx->dllredirect_section;
3693 data->ulAssemblyRosterIndex =
index->rosterindex;
3711 unsigned int i,
j,
k, total_len = 0, class_count = 0;
3718 for (
i = 0;
i <
actctx->num_assemblies;
i++)
3724 for (
k = 0;
k <
dll->entities.num;
k++)
3727 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION)
3733 total_len +=
sizeof(*index);
3734 total_len +=
sizeof(*data);
3751 total_len +=
sizeof(*header);
3758 header->size =
sizeof(*header);
3759 header->count = class_count;
3760 header->index_offset =
sizeof(*header);
3764 for (
i = 0;
i <
actctx->num_assemblies;
i++)
3770 for (
k = 0;
k <
dll->entities.num;
k++)
3773 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION)
3775 static const WCHAR exclW[] = {
'!',0};
3776 ULONG versioned_len, module_len;
3791 versioned_len =
str.Length;
3794 index->name_offset = name_offset;
3797 index->data_len =
sizeof(*data) + versioned_len + module_len + 2*
sizeof(
WCHAR) ;
3798 index->rosterindex =
i + 1;
3802 data->size =
sizeof(*data);
3804 data->name_len = versioned_len;
3805 data->name_offset =
sizeof(*data);
3817 ptrW[
data->module_len/
sizeof(
WCHAR)] = 0;
3857 if (!
actctx->wndclass_section)
3872 for (
i = 0;
i <
actctx->wndclass_section->count;
i++)
3895 data->ulDataFormatVersion = 1;
3896 data->lpData =
class;
3898 data->ulLength =
class->size +
class->name_len +
class->module_len + 2*
sizeof(
WCHAR);
3900 data->ulSectionGlobalDataLength = 0;
3901 data->lpSectionBase =
actctx->wndclass_section;
3906 data->ulAssemblyRosterIndex =
index->rosterindex;
3914 unsigned int i,
j,
k, total_len = 0, tlib_count = 0, names_len = 0;
3916 ULONG module_offset, data_offset;
3921 for (
i = 0;
i <
actctx->num_assemblies;
i++)
3927 for (
k = 0;
k <
dll->entities.num;
k++)
3930 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION)
3933 total_len +=
sizeof(*index);
3934 total_len +=
sizeof(*data);
3949 total_len +=
sizeof(*header);
3956 header->size =
sizeof(*header);
3957 header->count = tlib_count;
3960 module_offset =
sizeof(*header);
3963 for (
i = 0;
i <
actctx->num_assemblies;
i++)
3969 for (
k = 0;
k <
dll->entities.num;
k++)
3972 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION)
3974 ULONG module_len, help_len;
3994 index->data_offset = data_offset;
3996 index->rosterindex =
i + 1;
4000 data->size =
sizeof(*data);
4002 data->name_len = module_len;
4003 data->name_offset = module_offset;
4008 data->help_offset =
sizeof(*data);
4025 data_offset +=
sizeof(*data);
4029 module_offset += module_len +
sizeof(
WCHAR);
4054 if (!
actctx->tlib_section)
4070 data->ulDataFormatVersion = 1;
4071 data->lpData = tlib;
4075 data->ulSectionGlobalDataLength =
actctx->tlib_section->names_len;
4081 data->ulAssemblyRosterIndex =
index->rosterindex;
4095 guid->Data3 &= 0x0fff;
4096 guid->Data3 |= (4 << 12);
4097 guid->Data4[0] &= 0x3f;
4098 guid->Data4[0] |= 0x80;
4102 unsigned int *
count,
unsigned int *
len,
unsigned int *module_len)
4106 for (
i = 0;
i < entities->
num;
i++)
4109 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)
4156 for (
i = 0;
i < entities->
num;
i++)
4159 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)
4181 (*index)->data_offset = *data_offset;
4182 (*index)->data_len =
sizeof(*data);
4183 (*index)->rosterindex = rosterindex;
4188 alias_index = (*index) +
section->count/2;
4196 data->size =
sizeof(*data);
4201 data->clsid = (*index)->guid;
4213 data->name_len = module_len;
4214 data->name_offset = *module_offset;
4216 data->progid_offset =
data->progid_len ?
data->size : 0;
4217 data->clrdata_len = 0;
4227 if (
data->miscstatus)
4229 if (
data->miscstatuscontent)
4231 if (
data->miscstatusthumbnail)
4233 if (
data->miscstatusicon)
4235 if (
data->miscstatusdocprint)
4238 if (
data->clrdata_offset)
4242 clrdata->
size =
sizeof(*clrdata);
4243 clrdata->
res[0] = 0;
4244 clrdata->
res[1] = 2;
4251 clrdata->
res2[0] = 0;
4252 clrdata->
res2[1] = 0;
4280 if (
data->progid_len)
4281 data->progid_offset +=
data->clrdata_len;
4282 (*index)->data_len +=
sizeof(*clrdata);
4295 if (
data->progid_len)
4299 ptrW[
data->progid_len/
sizeof(
WCHAR)] = 0;
4314 alias_index->
data_len = (*index)->data_len;
4322 (*data_offset) +=
sizeof(*clrdata);
4334 unsigned int i,
j, total_len = 0, class_count = 0, names_len = 0;
4336 ULONG module_offset, data_offset;
4342 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4354 total_len +=
sizeof(*header);
4361 header->size =
sizeof(*header);
4362 header->count = 2*class_count;
4365 module_offset =
sizeof(*header);
4369 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4407 if (!
actctx->comserver_section)
4423 data->ulDataFormatVersion = 1;
4424 data->lpData = comclass;
4428 data->lpSectionGlobalData = (
BYTE*)
actctx->comserver_section +
actctx->comserver_section->names_offset;
4429 data->ulSectionGlobalDataLength =
actctx->comserver_section->names_len;
4430 data->lpSectionBase =
actctx->comserver_section;
4435 data->ulAssemblyRosterIndex =
index->rosterindex;
4444 for (
i = 0;
i < entities->
num;
i++)
4447 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION)
4462 for (
i = 0;
i < entities->
num;
i++)
4465 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION)
4482 (*index)->data_offset = *data_offset;
4484 (*index)->rosterindex = rosterindex;
4487 data->size =
sizeof(*data);
4500 data->iid = (*index)->guid;
4525 data->name_offset =
data->name_len ?
sizeof(*data) : 0;
4537 *data_offset +=
sizeof(*data);
4548 unsigned int i,
j, total_len = 0,
count = 0;
4554 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4566 total_len +=
sizeof(*header);
4573 header->size =
sizeof(*header);
4575 header->index_offset =
sizeof(*header);
4579 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4620 if (!
actctx->ifaceps_section)
4636 data->ulDataFormatVersion = 1;
4637 data->lpData = iface;
4640 data->ulSectionGlobalDataLength = 0;
4641 data->lpSectionBase =
actctx->ifaceps_section;
4646 data->ulAssemblyRosterIndex =
index->rosterindex;
4653 unsigned int i,
j, total_len = 0,
count = 0;
4660 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4666 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES)
4670 total_len +=
sizeof(*index) +
sizeof(*data);
4681 total_len +=
sizeof(*header);
4688 header->size =
sizeof(*header);
4690 header->index_offset =
sizeof(*header);
4694 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4700 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES)
4702 ULONG version_len, name_len;
4722 index->data_offset = data_offset;
4724 index->rosterindex =
i + 1;
4728 data->size =
sizeof(*data);
4744 if (
data->version_len)
4748 ptrW[
data->version_len/
sizeof(
WCHAR)] = 0;
4751 data_offset +=
index->data_offset;
4774 if (!
actctx->clrsurrogate_section)
4790 data->ulDataFormatVersion = 1;
4791 data->lpData = surrogate;
4798 data->ulSectionGlobalDataLength = 0;
4799 data->lpSectionBase =
actctx->clrsurrogate_section;
4804 data->ulAssemblyRosterIndex =
index->rosterindex;
4811 unsigned int i,
j, single_len;
4814 for (
i = 0;
i < entities->
num;
i++)
4817 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)
4848 (*index)->name_offset = *data_offset;
4849 (*index)->name_len =
str.Length;
4851 (*index)->data_len =
sizeof(*data);
4852 (*index)->rosterindex = rosterindex;
4858 data->size =
sizeof(*data);
4860 data->clsid_offset = *global_offset;
4865 ptrW[(*index)->name_len/
sizeof(
WCHAR)] = 0;
4872 *global_offset +=
sizeof(
GUID);
4873 *data_offset +=
data->size;
4883 for (
i = 0;
i < entities->
num;
i++)
4886 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)
4916 unsigned int i,
j, total_len = 0,
count = 0;
4923 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4935 total_len +=
sizeof(*header);
4942 header->size =
sizeof(*header);
4950 global_offset =
header->global_offset;
4952 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4993 if (!
actctx->comserver_section)
5004 if (!
actctx->progid_section)
5022 data->ulDataFormatVersion = 1;
5025 data->lpSectionGlobalData = (
BYTE*)
actctx->progid_section +
actctx->progid_section->global_offset;
5026 data->ulSectionGlobalDataLength =
actctx->progid_section->global_len;
5027 data->lpSectionBase =
actctx->progid_section;
5032 data->ulAssemblyRosterIndex =
index->rosterindex;
5044 switch (section_kind)
5047 case ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION:
5048 DPRINT1(
"Unsupported yet section_kind %x\n", section_kind);
5051 case ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION:
5054 case ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION:
5057 case ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION:
5060 case ACTIVATION_CONTEXT_SECTION_GLOBAL_OBJECT_RENAME_TABLE:
5061 FIXME(
"Unsupported yet section_kind %x\n", section_kind);
5064 WARN(
"Unknown section_kind %x\n", section_kind);
5070 if (
data && (
flags & FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX))
5083 switch (section_kind)
5085 case ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION:
5088 case ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION:
5091 case ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION:
5094 case ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES:
5098 WARN(
"Unknown section_kind %x\n", section_kind);
5104 if (
flags & FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX)
5120 ctx.cbSize =
sizeof(
ctx);
5122 ctx.dwFlags = ACTCTX_FLAG_RESOURCE_NAME_VALID | ACTCTX_FLAG_HMODULE_VALID;
5123 ctx.hModule =
NtCurrentTeb()->ProcessEnvironmentBlock->ImageBaseAddress;
5150 DPRINT1(
"Failed to create the implicit act ctx. Status: 0x%x!!!\n",
Status);
5163 IN PACTIVATION_CONTEXT_DATA ActivationContextData,
5169 const ACTCTXW *pActCtx = (
PVOID)ActivationContextData;
5171 PACTIVATION_CONTEXT_WRAPPED ActualActCtx;
5179 TRACE(
"%p %08x\n", pActCtx, pActCtx ? pActCtx->dwFlags : 0);
5181 if (!pActCtx || pActCtx->cbSize <
sizeof(*pActCtx) ||
5191 actctx = &ActualActCtx->ActivationContext;
5193 actctx->config.type = ACTIVATION_CONTEXT_PATH_TYPE_NONE;
5195 actctx->appdir.type = ACTIVATION_CONTEXT_PATH_TYPE_WIN32_FILE;
5196 if (pActCtx->dwFlags & ACTCTX_FLAG_APPLICATION_NAME_VALID)
5206 if (pActCtx->dwFlags & ACTCTX_FLAG_HMODULE_VALID)
module = pActCtx->hModule;
5218 if (pActCtx->lpSource && !((pActCtx->dwFlags & ACTCTX_FLAG_RESOURCE_NAME_VALID) &&
5219 (pActCtx->dwFlags & ACTCTX_FLAG_HMODULE_VALID)))
5224 if (pActCtx->dwFlags & ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID &&
5227 DWORD dir_len, source_len;
5229 dir_len =
strlenW(pActCtx->lpAssemblyDirectory);
5230 source_len =
strlenW(pActCtx->lpSource);
5262 if (pActCtx->dwFlags & ACTCTX_FLAG_LANGID_VALID)
lang = pActCtx->wLangId;
5263 if (pActCtx->dwFlags & ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID)
directory = pActCtx->lpAssemblyDirectory;
5265 if (pActCtx->dwFlags & ACTCTX_FLAG_RESOURCE_NAME_VALID)
5268 if (pActCtx->dwFlags & ACTCTX_FLAG_HMODULE_VALID)
5271 pActCtx->lpResourceName,
lang );
5275 pActCtx->hModule, pActCtx->lpResourceName );
5277 else if (pActCtx->lpSource && pActCtx->lpResourceName)
5280 file, pActCtx->lpResourceName,
lang );
5283 NULL, pActCtx->lpResourceName );
5310#define ACT_CTX_VALID(p) ((((ULONG_PTR)p - 1) | 7) != -1)
5317 LONG OldRefCount, NewRefCount;
5321 RtlpValidateActCtx(
ActCtx);
5325 OldRefCount =
ActCtx->RefCount;
5328 if (OldRefCount ==
LONG_MAX)
break;
5330 NewRefCount = OldRefCount + 1;
5333 OldRefCount) == OldRefCount)
5352 RtlpValidateActCtx(
ActCtx);
5409 DPRINT(
"ActiveSP %p: ACTIVATE (ActiveFrame %p -> NewFrame %p, Context %p)\n",
5449 DPRINT(
"ActiveSP %p: DEACTIVATE (ActiveFrame %p -> PreviousFrame %p)\n",
5451 NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame,
5457 while (
top !=
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame)
5479 ActiveFrame =
Stack->ActiveFrame;
5487 ActiveFrame = PrevFrame;
5507 RtlFreeActivationContextStack(
NtCurrentTeb()->ActivationContextStackPointer);
5512 frame =
NtCurrentTeb()->ActivationContextStack.ActiveFrame;
5530 if (
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame)
5532 *
handle =
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame->ActivationContext;
5549 for (frame =
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame; frame; frame = frame->
Previous)
5571 if (retlen) *retlen = 0;
5576 case ActivationContextBasicInformation:
5578 ACTIVATION_CONTEXT_BASIC_INFORMATION *
info =
buffer;
5580 if (retlen) *retlen =
sizeof(*info);
5589 case ActivationContextDetailedInformation:
5591 ACTIVATION_CONTEXT_DETAILED_INFORMATION *acdi =
buffer;
5593 SIZE_T len, manifest_len = 0, config_len = 0, appdir_len = 0;
5604 len =
sizeof(*acdi) + (manifest_len + config_len + appdir_len) *
sizeof(
WCHAR);
5606 if (retlen) *retlen =
len;
5610 acdi->ulFormatVersion =
assembly ? 1 : 0;
5611 acdi->ulAssemblyCount =
actctx->num_assemblies;
5614 acdi->ulRootConfigurationPathType =
actctx->config.type;
5615 acdi->ulRootConfigurationPathChars =
actctx->config.info ? config_len - 1 : 0;
5616 acdi->ulAppDirPathType =
actctx->appdir.type;
5617 acdi->ulAppDirPathChars =
actctx->appdir.info ? appdir_len - 1 : 0;
5621 acdi->lpRootManifestPath =
ptr;
5623 ptr += manifest_len;
5625 else acdi->lpRootManifestPath =
NULL;
5628 acdi->lpRootConfigurationPath =
ptr;
5632 else acdi->lpRootConfigurationPath =
NULL;
5635 acdi->lpAppDirPath =
ptr;
5638 else acdi->lpAppDirPath =
NULL;
5642 case AssemblyDetailedInformationInActivationContext:
5644 ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION *afdi =
buffer;
5660 id_len =
strlenW(assembly_id) + 1;
5669 if (retlen) *retlen =
len;
5677 afdi->ulEncodedAssemblyIdentityLength = (id_len - 1) *
sizeof(
WCHAR);
5681 afdi->ulPolicyPathType = ACTIVATION_CONTEXT_PATH_TYPE_NONE;
5682 afdi->ulPolicyPathLength = 0;
5684 afdi->ulMetadataSatelliteRosterIndex = 0;
5685 afdi->ulManifestVersionMajor = 1;
5686 afdi->ulManifestVersionMinor = 0;
5687 afdi->ulPolicyVersionMajor = 0;
5688 afdi->ulPolicyVersionMinor = 0;
5689 afdi->ulAssemblyDirectoryNameLength = ad_len ? (ad_len - 1) *
sizeof(
WCHAR) : 0;
5691 afdi->lpAssemblyEncodedAssemblyIdentity =
ptr;
5696 afdi->lpAssemblyManifestPath =
ptr;
5699 }
else afdi->lpAssemblyManifestPath =
NULL;
5700 afdi->lpAssemblyPolicyPath =
NULL;
5703 afdi->lpAssemblyDirectoryName =
ptr;
5706 else afdi->lpAssemblyDirectoryName =
NULL;
5711 case FileInformationInAssemblyOfAssemblyInActivationContext:
5713 const ACTIVATION_CONTEXT_QUERY_INDEX *acqi = subinst;
5714 ASSEMBLY_FILE_DETAILED_INFORMATION *afdi =
buffer;
5723 if (acqi->ulAssemblyIndex >=
actctx->num_assemblies)
5732 len =
sizeof(*afdi) + dll_len *
sizeof(
WCHAR);
5736 if (retlen) *retlen =
len;
5739 if (retlen) *retlen = 0;
5740 afdi->ulFlags = ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION;
5741 afdi->ulFilenameLength = dll_len ? (dll_len - 1) *
sizeof(
WCHAR) : 0;
5742 afdi->ulPathLength = 0;
5746 afdi->lpFileName =
ptr;
5748 }
else afdi->lpFileName =
NULL;
5749 afdi->lpFilePath =
NULL;
5753 case CompatibilityInformationInActivationContext:
5756 COMPATIBILITY_CONTEXT_ELEMENT *elements;
5769 if (retlen) *retlen =
len;
5773 elements = (COMPATIBILITY_CONTEXT_ELEMENT*)(acci + 1);
5781 case RunlevelInformationInActivationContext:
5783 ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION *acrli =
buffer;
5789 len =
sizeof(*acrli);
5790 if (retlen) *retlen =
len;
5803 FIXME(
"class %u not implemented\n",
class );
5812RtlQueryInformationActiveActivationContext(
ULONG ulInfoClass,
5823 pcbWrittenOrRequired);
5826#define FIND_ACTCTX_RETURN_FLAGS 0x00000002
5827#define FIND_ACTCTX_RETURN_ASSEMBLY_METADATA 0x00000004
5828#define FIND_ACTCTX_VALID_MASK (FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX | FIND_ACTCTX_RETURN_FLAGS | FIND_ACTCTX_RETURN_ASSEMBLY_METADATA)
5836 if (!section_name || !section_name->
Buffer ||
5837 (
flags & ~FIND_ACTCTX_VALID_MASK) ||
5838 ((
flags & FIND_ACTCTX_VALID_MASK) && !
data) ||
5839 (
data &&
data->cbSize <
offsetof(ACTCTX_SECTION_KEYED_DATA, ulAssemblyRosterIndex)))
5841 DPRINT1(
"invalid parameter\n");
5846 if (
flags & FIND_ACTCTX_RETURN_FLAGS ||
5847 flags & FIND_ACTCTX_RETURN_ASSEMBLY_METADATA)
5869 DPRINT(
"RtlFindActivationContextSectionString(%x %p %x %wZ %p)\n",
flags,
guid, section_kind, section_name,
ptr);
5870 status = RtlpFindActivationContextSection_CheckParameters(
flags,
guid, section_kind, section_name,
data);
5873 DPRINT1(
"RtlFindActivationContextSectionString() failed with status %x\n",
status);
5883 DPRINT(
"RtlFindActivationContextSectionString() failed with status %x\n",
status);
5890 DPRINT(
"ActiveFrame: %p\n",
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame);
5891 if (
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame)
5904 DPRINT(
"RtlFindActivationContextSectionString() returns status %x\n",
status);
5917 ACTCTX_SECTION_KEYED_DATA *
data =
ptr;
5922 FIXME(
"expected extguid == NULL\n");
5926 if (
flags & ~FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX)
5935 if (
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame)
5970 ContextStack->
Flags = 0;
5976 *
Stack = ContextStack;
5983RtlActivateActivationContextUnsafeFast(
IN PRTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED Frame,
5990 ActiveFrame =
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame;
5992 DPRINT(
"ActiveSP %p: ACTIVATE (ActiveFrame %p -> NewFrame %p, Context %p)\n",
5993 NtCurrentTeb()->ActivationContextStackPointer, ActiveFrame,
5998 ASSERT(Frame->Size >=
sizeof(RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_BASIC));
6001 if (Frame->Size >=
sizeof(RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED))
6022 NewFrame = &Frame->Frame;
6025 Frame->Frame.
Previous = ActiveFrame;
6034 DPRINT(
"Setting new active frame %p instead of old %p\n", NewFrame, ActiveFrame);
6035 NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame = NewFrame;
6040 DPRINT(
"Trying to activate already activated activation context\n");
6044 if (!RtlpNotAllowingMultipleActivation)
6047 NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame = NewFrame;
6051 NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame = NewFrame;
6060RtlDeactivateActivationContextUnsafeFast(
IN PRTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED Frame)
6064 ActiveFrame =
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame;
6068 ASSERT(Frame->Size >=
sizeof(RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_BASIC));
6076 if (Frame->Size >=
sizeof(RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED))
6091 DPRINT1(
"Deactivating not really activated activation context\n");
6093 return &Frame->Frame;
6097 NewFrame = &Frame->Frame;
6098 if (ActiveFrame != NewFrame)
6100 DPRINT1(
"Deactivating wrong active frame: %p != %p\n", ActiveFrame, NewFrame);
6103 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)
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[]
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
WINE_UNICODE_INLINE WCHAR * memchrW(const WCHAR *ptr, WCHAR ch, size_t n)
_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)
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)
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)
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 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[]
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[]
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 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 parse_manifest(struct actctx_loader *acl, struct assembly_identity *ai, LPCWSTR filename, LPCWSTR directory, BOOL shared, const void *buffer, SIZE_T size)
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[]
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 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)
@ 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 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::@4976::@4982 settings
DWORD miscstatusthumbnail
struct entity::@4976::@4978 comclass
struct entity::@4976::@4980 class
struct entity::@4976::@4981 clrsurrogate
struct entity::@4976::@4979 ifaceps
struct entity::@4976::@4977 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
_Must_inspect_result_ _In_ ULONG Flags
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
#define RtlUshortByteSwap(_x)