24#include <wine/unicode.h>
28#define ACTCTX_FLAGS_ALL (\
29 ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID |\
30 ACTCTX_FLAG_LANGID_VALID |\
31 ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID |\
32 ACTCTX_FLAG_RESOURCE_NAME_VALID |\
33 ACTCTX_FLAG_SET_PROCESS_DEFAULT |\
34 ACTCTX_FLAG_APPLICATION_NAME_VALID |\
35 ACTCTX_FLAG_SOURCE_IS_ASSEMBLYREF |\
36 ACTCTX_FLAG_HMODULE_VALID )
38#define STRSECTION_MAGIC 0x64487353
39#define GUIDSECTION_MAGIC 0x64487347
41#define ACTCTX_MAGIC_MARKER (PVOID)'gMcA'
43#define ACTCTX_FAKE_HANDLE ((HANDLE) 0xf00baa)
44#define ACTCTX_FAKE_COOKIE ((ULONG_PTR) 0xf00bad)
46#define MAX_NAMESPACES 64
549#elif defined __x86_64__
553#elif defined __aarch64__
559static const WCHAR asmv1W[] = {
'u',
'r',
'n',
':',
's',
'c',
'h',
'e',
'm',
'a',
's',
'-',
'm',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'-',
'c',
'o',
'm',
':',
'a',
's',
'm',
'.',
'v',
'1',0};
560static const WCHAR asmv2W[] = {
'u',
'r',
'n',
':',
's',
'c',
'h',
'e',
'm',
'a',
's',
'-',
'm',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'-',
'c',
'o',
'm',
':',
'a',
's',
'm',
'.',
'v',
'2',0};
561static const WCHAR asmv3W[] = {
'u',
'r',
'n',
':',
's',
'c',
'h',
'e',
'm',
'a',
's',
'-',
'm',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'-',
'c',
'o',
'm',
':',
'a',
's',
'm',
'.',
'v',
'3',0};
606 DbgPrint(
"%s : Invalid activation context marker %p found in activation context %p\n"
607 " This means someone stepped on the allocation, or someone is using a\n"
608 " deallocated activation context\n",
618static const WCHAR assemblyIdentityW[] = {
'a',
's',
's',
'e',
'm',
'b',
'l',
'y',
'I',
'd',
'e',
'n',
't',
'i',
't',
'y',0};
619static const WCHAR bindingRedirectW[] = {
'b',
'i',
'n',
'd',
'i',
'n',
'g',
'R',
'e',
'd',
'i',
'r',
'e',
'c',
't',0};
621static const WCHAR clrSurrogateW[] = {
'c',
'l',
'r',
'S',
'u',
'r',
'r',
'o',
'g',
'a',
't',
'e',0};
623static const WCHAR comInterfaceExternalProxyStubW[] = {
'c',
'o',
'm',
'I',
'n',
't',
'e',
'r',
'f',
'a',
'c',
'e',
'E',
'x',
't',
'e',
'r',
'n',
'a',
'l',
'P',
'r',
'o',
'x',
'y',
'S',
't',
'u',
'b',0};
624static const WCHAR comInterfaceProxyStubW[] = {
'c',
'o',
'm',
'I',
'n',
't',
'e',
'r',
'f',
'a',
'c',
'e',
'P',
'r',
'o',
'x',
'y',
'S',
't',
'u',
'b',0};
625static const WCHAR dependencyW[] = {
'd',
'e',
'p',
'e',
'n',
'd',
'e',
'n',
'c',
'y',0};
626static const WCHAR dependentAssemblyW[] = {
'd',
'e',
'p',
'e',
'n',
'd',
'e',
'n',
't',
'A',
's',
's',
'e',
'm',
'b',
'l',
'y',0};
627static const WCHAR descriptionW[] = {
'd',
'e',
's',
'c',
'r',
'i',
'p',
't',
'i',
'o',
'n',0};
631static const WCHAR noInheritableW[] = {
'n',
'o',
'I',
'n',
'h',
'e',
'r',
'i',
't',
'a',
'b',
'l',
'e',0};
633static const WCHAR windowClassW[] = {
'w',
'i',
'n',
'd',
'o',
'w',
'C',
'l',
'a',
's',
's',0};
640static const WCHAR manifestVersionW[] = {
'm',
'a',
'n',
'i',
'f',
'e',
's',
't',
'V',
'e',
'r',
's',
'i',
'o',
'n',0};
643static const WCHAR newVersionW[] = {
'n',
'e',
'w',
'V',
'e',
'r',
's',
'i',
'o',
'n',0};
644static const WCHAR oldVersionW[] = {
'o',
'l',
'd',
'V',
'e',
'r',
's',
'i',
'o',
'n',0};
646static const WCHAR processorArchitectureW[] = {
'p',
'r',
'o',
'c',
'e',
's',
's',
'o',
'r',
'A',
'r',
'c',
'h',
'i',
't',
'e',
'c',
't',
'u',
'r',
'e',0};
648static const WCHAR publicKeyTokenW[] = {
'p',
'u',
'b',
'l',
'i',
'c',
'K',
'e',
'y',
'T',
'o',
'k',
'e',
'n',0};
649static const WCHAR threadingmodelW[] = {
't',
'h',
'r',
'e',
'a',
'd',
'i',
'n',
'g',
'M',
'o',
'd',
'e',
'l',0};
657static const WCHAR restrictedW[] = {
'R',
'E',
'S',
'T',
'R',
'I',
'C',
'T',
'E',
'D',0};
660static const WCHAR hasdiskimageW[] = {
'H',
'A',
'S',
'D',
'I',
'S',
'K',
'I',
'M',
'A',
'G',
'E',0};
662static const WCHAR miscstatusW[] = {
'm',
'i',
's',
'c',
'S',
't',
'a',
't',
'u',
's',0};
663static const WCHAR miscstatusiconW[] = {
'm',
'i',
's',
'c',
'S',
't',
'a',
't',
'u',
's',
'I',
'c',
'o',
'n',0};
664static const WCHAR miscstatuscontentW[] = {
'm',
'i',
's',
'c',
'S',
't',
'a',
't',
'u',
's',
'C',
'o',
'n',
't',
'e',
'n',
't',0};
665static const WCHAR miscstatusthumbnailW[] = {
'm',
'i',
's',
'c',
'S',
't',
'a',
't',
'u',
's',
'T',
'h',
'u',
'm',
'b',
'n',
'a',
'i',
'l',0};
666static const WCHAR miscstatusdocprintW[] = {
'm',
'i',
's',
'c',
'S',
't',
'a',
't',
'u',
's',
'D',
'o',
'c',
'P',
'r',
'i',
'n',
't',0};
667static const WCHAR baseInterfaceW[] = {
'b',
'a',
's',
'e',
'I',
'n',
't',
'e',
'r',
'f',
'a',
'c',
'e',0};
668static const WCHAR nummethodsW[] = {
'n',
'u',
'm',
'M',
'e',
't',
'h',
'o',
'd',
's',0};
669static const WCHAR proxyStubClsid32W[] = {
'p',
'r',
'o',
'x',
'y',
'S',
't',
'u',
'b',
'C',
'l',
's',
'i',
'd',
'3',
'2',0};
670static const WCHAR runtimeVersionW[] = {
'r',
'u',
'n',
't',
'i',
'm',
'e',
'V',
'e',
'r',
's',
'i',
'o',
'n',0};
671static const WCHAR mscoreeW[] = {
'M',
'S',
'C',
'O',
'R',
'E',
'E',
'.',
'D',
'L',
'L',0};
672static const WCHAR mscoree2W[] = {
'm',
's',
'c',
'o',
'r',
'e',
'e',
'.',
'd',
'l',
'l',0};
674static const WCHAR activatewhenvisibleW[] = {
'a',
'c',
't',
'i',
'v',
'a',
't',
'e',
'w',
'h',
'e',
'n',
'v',
'i',
's',
'i',
'b',
'l',
'e',0};
675static const WCHAR actslikebuttonW[] = {
'a',
'c',
't',
's',
'l',
'i',
'k',
'e',
'b',
'u',
't',
't',
'o',
'n',0};
676static const WCHAR actslikelabelW[] = {
'a',
'c',
't',
's',
'l',
'i',
'k',
'e',
'l',
'a',
'b',
'e',
'l',0};
679static const WCHAR canlinkbyole1W[] = {
'c',
'a',
'n',
'l',
'i',
'n',
'k',
'b',
'y',
'o',
'l',
'e',
'1',0};
680static const WCHAR cantlinkinsideW[] = {
'c',
'a',
'n',
't',
'l',
'i',
'n',
'k',
'i',
'n',
's',
'i',
'd',
'e',0};
681static const WCHAR ignoreactivatewhenvisibleW[] = {
'i',
'g',
'n',
'o',
'r',
'e',
'a',
'c',
't',
'i',
'v',
'a',
't',
'e',
'w',
'h',
'e',
'n',
'v',
'i',
's',
'i',
'b',
'l',
'e',0};
683static const WCHAR insertnotreplaceW[] = {
'i',
'n',
's',
'e',
'r',
't',
'n',
'o',
't',
'r',
'e',
'p',
'l',
'a',
'c',
'e',0};
685static const WCHAR invisibleatruntimeW[] = {
'i',
'n',
'v',
'i',
's',
'i',
'b',
'l',
'e',
'a',
't',
'r',
'u',
'n',
't',
'i',
'm',
'e',0};
686static const WCHAR islinkobjectW[] = {
'i',
's',
'l',
'i',
'n',
'k',
'o',
'b',
'j',
'e',
'c',
't',0};
687static const WCHAR nouiactivateW[] = {
'n',
'o',
'u',
'i',
'a',
'c',
't',
'i',
'v',
'a',
't',
'e',0};
688static const WCHAR onlyiconicW[] = {
'o',
'n',
'l',
'y',
'i',
'c',
'o',
'n',
'i',
'c',0};
689static const WCHAR recomposeonresizeW[] = {
'r',
'e',
'c',
'o',
'm',
'p',
'o',
's',
'e',
'o',
'n',
'r',
'e',
's',
'i',
'z',
'e',0};
690static const WCHAR renderingisdeviceindependentW[] = {
'r',
'e',
'n',
'd',
'e',
'r',
'i',
'n',
'g',
'i',
's',
'd',
'e',
'v',
'i',
'c',
'e',
'i',
'n',
'd',
'e',
'p',
'e',
'n',
'd',
'e',
'n',
't',0};
691static const WCHAR setclientsitefirstW[] = {
's',
'e',
't',
'c',
'l',
'i',
'e',
'n',
't',
's',
'i',
't',
'e',
'f',
'i',
'r',
's',
't',0};
692static const WCHAR simpleframeW[] = {
's',
'i',
'm',
'p',
'l',
'e',
'f',
'r',
'a',
'm',
'e',0};
694static const WCHAR supportsmultilevelundoW[] = {
's',
'u',
'p',
'p',
'o',
'r',
't',
's',
'm',
'u',
'l',
't',
'i',
'l',
'e',
'v',
'e',
'l',
'u',
'n',
'd',
'o',0};
695static const WCHAR wantstomenumergeW[] = {
'w',
'a',
'n',
't',
's',
't',
'o',
'm',
'e',
'n',
'u',
'm',
'e',
'r',
'g',
'e',0};
697static const WCHAR compatibilityW[] = {
'c',
'o',
'm',
'p',
'a',
't',
'i',
'b',
'i',
'l',
'i',
't',
'y',0};
698static const WCHAR compatibilityNSW[] = {
'u',
'r',
'n',
':',
's',
'c',
'h',
'e',
'm',
'a',
's',
'-',
'm',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'-',
'c',
'o',
'm',
':',
'c',
'o',
'm',
'p',
'a',
't',
'i',
'b',
'i',
'l',
'i',
't',
'y',
'.',
'v',
'1',0};
699static const WCHAR applicationW[] = {
'a',
'p',
'p',
'l',
'i',
'c',
'a',
't',
'i',
'o',
'n',0};
700static const WCHAR supportedOSW[] = {
's',
'u',
'p',
'p',
'o',
'r',
't',
'e',
'd',
'O',
'S',0};
702static const WCHAR requestedExecutionLevelW[] = {
'r',
'e',
'q',
'u',
'e',
's',
't',
'e',
'd',
'E',
'x',
'e',
'c',
'u',
't',
'i',
'o',
'n',
'L',
'e',
'v',
'e',
'l',0};
703static const WCHAR requestedPrivilegesW[] = {
'r',
'e',
'q',
'u',
'e',
's',
't',
'e',
'd',
'P',
'r',
'i',
'v',
'i',
'l',
'e',
'g',
'e',
's',0};
706static const WCHAR windowsSettingsW[] = {
'w',
'i',
'n',
'd',
'o',
'w',
's',
'S',
'e',
't',
't',
'i',
'n',
'g',
's',0};
707static const WCHAR autoElevateW[] = {
'a',
'u',
't',
'o',
'E',
'l',
'e',
'v',
'a',
't',
'e',0};
708static const WCHAR disableThemingW[] = {
'd',
'i',
's',
'a',
'b',
'l',
'e',
'T',
'h',
'e',
'm',
'i',
'n',
'g',0};
709static const WCHAR disableWindowFilteringW[] = {
'd',
'i',
's',
'a',
'b',
'l',
'e',
'W',
'i',
'n',
'd',
'o',
'w',
'F',
'i',
'l',
't',
'e',
'r',
'i',
'n',
'g',0};
710static const WCHAR windowsSettings2005NSW[] = {
'h',
't',
't',
'p',
':',
'/',
'/',
's',
'c',
'h',
'e',
'm',
'a',
's',
'.',
'm',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'.',
'c',
'o',
'm',
'/',
'S',
'M',
'I',
'/',
'2',
'0',
'0',
'5',
'/',
'W',
'i',
'n',
'd',
'o',
'w',
's',
'S',
'e',
't',
't',
'i',
'n',
'g',
's',0};
711static const WCHAR windowsSettings2011NSW[] = {
'h',
't',
't',
'p',
':',
'/',
'/',
's',
'c',
'h',
'e',
'm',
'a',
's',
'.',
'm',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'.',
'c',
'o',
'm',
'/',
'S',
'M',
'I',
'/',
'2',
'0',
'1',
'1',
'/',
'W',
'i',
'n',
'd',
'o',
'w',
's',
'S',
'e',
't',
't',
'i',
'n',
'g',
's',0};
712static const WCHAR windowsSettings2016NSW[] = {
'h',
't',
't',
'p',
':',
'/',
'/',
's',
'c',
'h',
'e',
'm',
'a',
's',
'.',
'm',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'.',
'c',
'o',
'm',
'/',
'S',
'M',
'I',
'/',
'2',
'0',
'1',
'6',
'/',
'W',
'i',
'n',
'd',
'o',
'w',
's',
'S',
'e',
't',
't',
'i',
'n',
'g',
's',0};
713static const WCHAR windowsSettings2017NSW[] = {
'h',
't',
't',
'p',
':',
'/',
'/',
's',
'c',
'h',
'e',
'm',
'a',
's',
'.',
'm',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'.',
'c',
'o',
'm',
'/',
'S',
'M',
'I',
'/',
'2',
'0',
'1',
'7',
'/',
'W',
'i',
'n',
'd',
'o',
'w',
's',
'S',
'e',
't',
't',
'i',
'n',
'g',
's',0};
715static const WCHAR dpiAwarenessW[] = {
'd',
'p',
'i',
'A',
'w',
'a',
'r',
'e',
'n',
'e',
's',
's',0};
716static const WCHAR gdiScalingW[] = {
'g',
'd',
'i',
'S',
'c',
'a',
'l',
'i',
'n',
'g',0};
717static const WCHAR highResolutionScrollingAwareW[] = {
'h',
'i',
'g',
'h',
'R',
'e',
's',
'o',
'l',
'u',
't',
'i',
'o',
'n',
'S',
'c',
'r',
'o',
'l',
'l',
'i',
'n',
'g',
'A',
'w',
'a',
'r',
'e',0};
718static const WCHAR longPathAwareW[] = {
'l',
'o',
'n',
'g',
'P',
'a',
't',
'h',
'A',
'w',
'a',
'r',
'e',0};
719static const WCHAR magicFutureSettingW[] = {
'm',
'a',
'g',
'i',
'c',
'F',
'u',
't',
'u',
'r',
'e',
'S',
'e',
't',
't',
'i',
'n',
'g',0};
720static const WCHAR printerDriverIsolationW[] = {
'p',
'r',
'i',
'n',
't',
'e',
'r',
'D',
'r',
'i',
'v',
'e',
'r',
'I',
's',
'o',
'l',
'a',
't',
'i',
'o',
'n',0};
721static const WCHAR ultraHighResolutionScrollingAwareW[] = {
'u',
'l',
't',
'r',
'a',
'H',
'i',
'g',
'h',
'R',
'e',
's',
'o',
'l',
'u',
't',
'i',
'o',
'n',
'S',
'c',
'r',
'o',
'l',
'l',
'i',
'n',
'g',
'A',
'w',
'a',
'r',
'e',0};
756static const WCHAR manifestv1W[] = {
'u',
'r',
'n',
':',
's',
'c',
'h',
'e',
'm',
'a',
's',
'-',
'm',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'-',
'c',
'o',
'm',
':',
'a',
's',
'm',
'.',
'v',
'1',0};
757static const WCHAR manifestv2W[] = {
'u',
'r',
'n',
':',
's',
'c',
'h',
'e',
'm',
'a',
's',
'-',
'm',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'-',
'c',
'o',
'm',
':',
'a',
's',
'm',
'.',
'v',
'2',0};
758static const WCHAR manifestv3W[] = {
'u',
'r',
'n',
':',
's',
'c',
'h',
'e',
'm',
'a',
's',
'-',
'm',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'-',
'c',
'o',
'm',
':',
'a',
's',
'm',
'.',
'v',
'3',0};
761static const WCHAR version_formatW[] = {
'%',
'u',
'.',
'%',
'u',
'.',
'%',
'u',
'.',
'%',
'u',0};
801 return (xmlstr->
len && xmlstr->
ptr[0] ==
'/' &&
836 return (ch ==
' ' || ch ==
'\r' || ch ==
'\n' || ch ==
'\t');
843 DPRINT(
"add_assembly() actctx %p, activeframe ??\n",
actctx);
845 if (
actctx->num_assemblies ==
actctx->allocated_assemblies)
848 unsigned int new_count;
851 new_count =
actctx->allocated_assemblies * 2;
862 actctx->allocated_assemblies = new_count;
877 unsigned int new_count;
904 new_count *
sizeof(COMPATIBILITY_CONTEXT_ELEMENT) );
931 unsigned int new_count;
934 new_count =
array->allocated * 2;
936 array->base, new_count *
sizeof(*
array->base) );
945 array->allocated = new_count;
960 case ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION:
970 case ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION:
977 case ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION:
981 case ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION:
984 case ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES:
998 if (!str1)
return !str2;
999 return str2 && !
strcmpiW( str1, str2 );
1032 DPRINT(
"reusing existing assembly for %S arch %S version %u.%u.%u.%u\n",
1041 DPRINT(
"reusing existing dependency for %S arch %S version %u.%u.%u.%u\n",
1050 unsigned int new_count;
1081 static const WCHAR undW[] = {
'_',0};
1082 static const WCHAR noneW[] = {
'n',
'o',
'n',
'e',0};
1083 static const WCHAR mskeyW[] = {
'd',
'e',
'a',
'd',
'b',
'e',
'e',
'f',0};
1127 {
',',
'p',
'r',
'o',
'c',
'e',
's',
's',
'o',
'r',
'A',
'r',
'c',
'h',
'i',
't',
'e',
'c',
't',
'u',
'r',
'e',
'=',0};
1128 static const WCHAR public_keyW[] =
1129 {
',',
'p',
'u',
'b',
'l',
'i',
'c',
'K',
'e',
'y',
'T',
'o',
'k',
'e',
'n',
'=',0};
1130 static const WCHAR typeW2[] =
1131 {
',',
't',
'y',
'p',
'e',
'=',0};
1132 static const WCHAR versionW2[] =
1133 {
',',
'v',
'e',
'r',
's',
'i',
'o',
'n',
'=',0};
1174 DPRINT1(
"Invalid activation context handle!\n");
1193 for (
i = 0;
i <
actctx->num_assemblies;
i++)
1266 for (
i = xmlbuf->
ns_pos - 1;
i >= 0;
i--)
1288 if (*xmlbuf->
ptr ==
'/')
1291 if (xmlbuf->
ptr == xmlbuf->
end || *xmlbuf->
ptr !=
'>')
1299 if (*xmlbuf->
ptr ==
'>')
1334 xmlbuf->
ptr = xmlbuf->
end;
1378 for (
ptr = xmlbuf->
ptr; ptr < xmlbuf->
end;
ptr++)
if (*
ptr ==
'<')
break;
1381 xmlbuf->
ptr = xmlbuf->
end;
1385 if (
ptr + 3 < xmlbuf->
end &&
ptr[0] ==
'!' &&
ptr[1] ==
'-' &&
ptr[2] ==
'-')
1388 if (
ptr[0] ==
'-' &&
ptr[1] ==
'-' &&
ptr[2] ==
'>')
break;
1390 if (
ptr + 3 > xmlbuf->
end)
1392 xmlbuf->
ptr = xmlbuf->
end;
1402 if (ptr < xmlbuf->
end && *
ptr ==
'/')
1441 if (
ptr[0] ==
'?' &&
ptr[1] ==
'>')
1465 unsigned int ver[4];
1470 ver[0] = ver[1] = ver[2] = ver[3] =
pos = 0;
1471 for (curr =
str->ptr; curr < str->
ptr +
str->len; curr++)
1473 if (*curr >=
'0' && *curr <=
'9')
1475 ver[
pos] = ver[
pos] * 10 + *curr -
'0';
1476 if (ver[
pos] >= 0x10000)
goto error;
1478 else if (*curr ==
'.')
1568 static const WCHAR apartW[] = {
'A',
'p',
'a',
'r',
't',
'm',
'e',
'n',
't',0};
1569 static const WCHAR neutralW[] = {
'N',
'e',
'u',
't',
'r',
'a',
'l',0};
1570 static const WCHAR freeW[] = {
'F',
'r',
'e',
'e',0};
1571 static const WCHAR bothW[] = {
'B',
'o',
't',
'h',0};
1620 while (i < value->
len)
1649 if (!new_progids)
return FALSE;
1681 if (!(
entity =
add_entity(&
dll->entities, ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)))
1758 for (curr =
str->ptr; curr < str->
ptr +
str->len; curr++)
1760 if (*curr >=
'0' && *curr <=
'9')
1761 num =
num * 10 + *curr -
'0';
1787 if (!(
entity =
add_entity(entities, ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)))
1808 if (!(
entity =
add_entity(&
dll->entities, ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION)))
1865 while (i < value->
len)
1871 *
flags |= LIBFLAG_FRESTRICTED;
1873 *
flags |= LIBFLAG_FCONTROL;
1875 *
flags |= LIBFLAG_FHIDDEN;
1877 *
flags |= LIBFLAG_FHASDISKIMAGE;
1894 unsigned int ver[2];
1899 ver[0] = ver[1] =
pos = 0;
1900 for (curr =
str->ptr; curr < str->
ptr +
str->len; curr++)
1902 if (*curr >=
'0' && *curr <=
'9')
1904 ver[
pos] = ver[
pos] * 10 + *curr -
'0';
1905 if (ver[
pos] >= 0x10000)
goto error;
1907 else if (*curr ==
'.')
1928 if (!(
entity =
add_entity(&
dll->entities, ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION)))
1960 return (
len + 3) & ~3;
1965 static const WCHAR fmtW[] = {
'%',
'u',
'.',
'%',
'u',
'.',
'%',
'u',
'.',
'%',
'u',0};
1982 if (!(
entity =
add_entity(&
dll->entities, ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION)))
2204 memset(&ai, 0,
sizeof(ai));
2209 static const WCHAR allowDelayedBindingW[] = {
'a',
'l',
'l',
'o',
'w',
'D',
'e',
'l',
'a',
'y',
'e',
'd',
'B',
'i',
'n',
'd',
'i',
'n',
'g',0};
2210 static const WCHAR trueW[] = {
't',
'r',
'u',
'e',0};
2309 static const WCHAR sha1W[] = {
'S',
'H',
'A',
'1',0};
2361 COMPATIBILITY_CONTEXT_ELEMENT *compat;
2374 compat->Type = ACTCTX_COMPATIBILITY_ELEMENT_TYPE_OS;
2375 compat->Id = compat_id;
2501 static const WCHAR levelW[] = {
'l',
'e',
'v',
'e',
'l',0};
2502 static const WCHAR asInvokerW[] = {
'a',
's',
'I',
'n',
'v',
'o',
'k',
'e',
'r',0};
2503 static const WCHAR requireAdministratorW[] = {
'r',
'e',
'q',
'u',
'i',
'r',
'e',
'A',
'd',
'm',
'i',
'n',
'i',
's',
't',
'r',
'a',
't',
'o',
'r',0};
2504 static const WCHAR highestAvailableW[] = {
'h',
'i',
'g',
'h',
'e',
's',
't',
'A',
'v',
'a',
'i',
'l',
'a',
'b',
'l',
'e',0};
2505 static const WCHAR uiAccessW[] = {
'u',
'i',
'A',
'c',
'c',
'e',
's',
's',0};
2506 static const WCHAR falseW[] = {
'f',
'a',
'l',
's',
'e',0};
2507 static const WCHAR trueW[] = {
't',
'r',
'u',
'e',0};
2610 static const WCHAR v10W[] = {
'1',
'.',
'0',0};
2668 if (!xmlbuf->
error && expected_ai)
2739 if (xmlbuf->
ptr != xmlbuf->
end)
2765 : ACTIVATION_CONTEXT_PATH_TYPE_NONE;
2784 xmlbuf.
ptr = new_buff;
2798 DPRINT1(
"RtlMultiByteToUnicodeSize failed with %lx\n",
status);
2809 DPRINT1(
"RtlMultiByteToUnicodeN failed with %lx\n",
status);
2813 xmlbuf.
ptr = new_buff;
2827 attr.RootDirectory = 0;
2831 attr.SecurityQualityOfService =
NULL;
2895 else if (resname[0] ==
'#')
2925 void *
root,
int want_dir );
2929 void *
root,
int want_dir )
2934 for (
pos =
dir->NumberOfNamedEntries; pos < dir->NumberOfNamedEntries +
dir->NumberOfIdEntries;
pos++)
2936 if (!
entry[
pos].DataIsDirectory == !want_dir)
2990 WCHAR resnameBuf[20];
2996 resptr = resnameBuf;
3002 attr.RootDirectory = 0;
3006 attr.SecurityQualityOfService =
NULL;
3051 attr.RootDirectory = 0;
3055 attr.SecurityQualityOfService =
NULL;
3085 static const WCHAR fmtW[] = {
'.',
'%',
'l',
'u',0 };
3094 DPRINT(
"looking for manifest associated with %S id %lu\n",
filename, resid );
3133 static const WCHAR lookup_fmtW[] =
3134 {
'%',
's',
'_',
'%',
's',
'_',
'%',
's',
'_',
'%',
'u',
'.',
'%',
'u',
'.',
'*',
'.',
'*',
'_',
3135 '%',
's',
'_',
'*',
'.',
'm',
'a',
'n',
'i',
'f',
'e',
's',
't',0};
3136 static const WCHAR wine_trailerW[] = {
'd',
'e',
'a',
'd',
'b',
'e',
'e',
'f',
'.',
'm',
'a',
'n',
'i',
'f',
'e',
's',
't'};
3142 unsigned int data_pos = 0, data_len;