23#include <wine/unicode.h>
29#define GetProcessHeap() RtlGetProcessHeap()
30#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
40#define wcsicmp _wcsicmp
44#undef CREATEPROCESS_MANIFEST_RESOURCE_ID
46BOOLEAN RtlpNotAllowingMultipleActivation;
50#define ACTCTX_FLAGS_ALL (\
51 ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID |\
52 ACTCTX_FLAG_LANGID_VALID |\
53 ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID |\
54 ACTCTX_FLAG_RESOURCE_NAME_VALID |\
55 ACTCTX_FLAG_SET_PROCESS_DEFAULT |\
56 ACTCTX_FLAG_APPLICATION_NAME_VALID |\
57 ACTCTX_FLAG_SOURCE_IS_ASSEMBLYREF |\
58 ACTCTX_FLAG_HMODULE_VALID )
60#define ACTCTX_MAGIC 0xC07E3E11
61#define STRSECTION_MAGIC 0x64487353
62#define GUIDSECTION_MAGIC 0x64487347
64#define ACTCTX_FAKE_HANDLE ((HANDLE) 0xf00baa)
67#define RT_MANIFEST ((ULONG_PTR)24)
68#define CREATEPROCESS_MANIFEST_RESOURCE_ID ((ULONG_PTR)1)
107#define MAX_NAMESPACES 64
581typedef struct _ASSEMBLY_STORAGE_MAP_ENTRY
586} ASSEMBLY_STORAGE_MAP_ENTRY, *PASSEMBLY_STORAGE_MAP_ENTRY;
588typedef struct _ASSEMBLY_STORAGE_MAP
592 PASSEMBLY_STORAGE_MAP_ENTRY *AssemblyArray;
593} ASSEMBLY_STORAGE_MAP, *PASSEMBLY_STORAGE_MAP;
603 PACTIVATION_CONTEXT_DATA ActivationContextData;
604 PVOID NotificationRoutine;
606 ULONG SentNotifications[8];
607 ULONG DisabledNotifications[8];
608 ASSEMBLY_STORAGE_MAP StorageMap;
609 PASSEMBLY_STORAGE_MAP_ENTRY InlineStorageMapEntries;
610 ULONG StackTraceIndex;
611 PVOID StackTraces[4][4];
642#elif defined __aarch64__ || defined __arm64ec__
644#elif defined __x86_64__
762 return (
ch ==
' ' ||
ch ==
'\r' ||
ch ==
'\n' ||
ch ==
'\t');
814 DPRINT(
"add_assembly() actctx %p, activeframe ??\n",
actctx);
816 if (
actctx->num_assemblies ==
actctx->allocated_assemblies)
819 unsigned int new_count;
822 new_count =
actctx->allocated_assemblies * 2;
833 actctx->allocated_assemblies = new_count;
848 unsigned int new_count;
875 new_count *
sizeof(COMPATIBILITY_CONTEXT_ELEMENT) );
902 unsigned int new_count;
905 new_count =
array->allocated * 2;
907 array->base, new_count *
sizeof(*
array->base) );
916 array->allocated = new_count;
931 case ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION:
941 case ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION:
948 case ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION:
952 case ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION:
955 case ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES:
960 case ACTIVATION_CONTEXT_SECTION_APPLICATION_SETTINGS:
965 case ACTIVATION_CONTEXT_SECTION_WINRT_ACTIVATABLE_CLASSES:
1011 TRACE(
"reusing existing assembly for %s arch %s version %u.%u.%u.%u\n",
1020 TRACE(
"reusing existing dependency for %s arch %s version %u.%u.%u.%u\n",
1029 unsigned int new_count;
1060 static const WCHAR mskeyW[] =
L"deadbeef";
1136 DPRINT1(
"Invalid activation context handle!\n");
1153 for (
i = 0;
i <
actctx->num_assemblies;
i++)
1208 FIXME(
"too many namespaces in manifest\n" );
1226 for (
i = xmlbuf->
ns_pos - 1;
i >= 0;
i--)
1248 if (*xmlbuf->
ptr ==
'/')
1251 if (xmlbuf->
ptr == xmlbuf->
end || *xmlbuf->
ptr !=
'>')
1259 if (*xmlbuf->
ptr ==
'>')
1294 xmlbuf->
ptr = xmlbuf->
end;
1338 for (
ptr = xmlbuf->
ptr; ptr < xmlbuf->
end;
ptr++)
if (*
ptr ==
'<')
break;
1341 xmlbuf->
ptr = xmlbuf->
end;
1345 if (
ptr + 3 < xmlbuf->
end &&
ptr[0] ==
'!' &&
ptr[1] ==
'-' &&
ptr[2] ==
'-')
1348 if (
ptr[0] ==
'-' &&
ptr[1] ==
'-' &&
ptr[2] ==
'>')
break;
1350 if (
ptr + 3 > xmlbuf->
end)
1352 xmlbuf->
ptr = xmlbuf->
end;
1362 if (ptr < xmlbuf->
end && *
ptr ==
'/')
1369 ERR(
"wrong closing element %s for %s\n",
1401 if (
ptr[0] ==
'?' &&
ptr[1] ==
'>')
1416 for (
ptr = xmlbuf->
ptr; ptr < xmlbuf->
end;
ptr++)
if (*
ptr ==
'<')
break;
1428 unsigned int ver[4];
1433 ver[0] = ver[1] = ver[2] = ver[3] =
pos = 0;
1434 for (curr =
str->ptr; curr < str->
ptr +
str->len; curr++)
1436 if (*curr >=
'0' && *curr <=
'9')
1438 ver[
pos] = ver[
pos] * 10 + *curr -
'0';
1439 if (ver[
pos] >= 0x10000)
goto error;
1441 else if (*curr ==
'.')
1530 TRACE(
"name=%s version=%s arch=%s\n",
1585 while (i < value->
len)
1614 if (!new_progids)
return FALSE;
1728 for (curr =
str->ptr; curr < str->
ptr +
str->len; curr++)
1730 if (*curr >=
'0' && *curr <=
'9')
1731 num =
num * 10 + *curr -
'0';
1757 if (!(
entity =
add_entity(entities, ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)))
1839 while (i < value->
len)
1868 unsigned int ver[2];
1873 ver[0] = ver[1] =
pos = 0;
1874 for (curr =
str->ptr; curr < str->
ptr +
str->len; curr++)
1876 if (*curr >=
'0' && *curr <=
'9')
1878 ver[
pos] = ver[
pos] * 10 + *curr -
'0';
1879 if (ver[
pos] >= 0x10000)
goto error;
1881 else if (*curr ==
'.')
1939 return (
len + 3) & ~3;
2210 memset(&ai, 0,
sizeof(ai));
2234 TRACE(
"adding name=%s version=%s arch=%s\n",
2409 WARN(
"asmv2:hash (undocumented) not supported\n");
2442 COMPATIBILITY_CONTEXT_ELEMENT *compat;
2455 compat->Type = ACTCTX_COMPATIBILITY_ELEMENT_TYPE_OS;
2456 compat->Id = compat_id;
2472#if (NTDDI_VERSION >= NTDDI_WIN10_19H1)
2483 COMPATIBILITY_CONTEXT_ELEMENT *compat;
2492 compat->Type = ACTCTX_COMPATIBILITY_ELEMENT_TYPE_MAXVERSIONTESTED;
2517#if (NTDDI_VERSION >= NTDDI_WIN10_19H1)
2755 TRACE(
"(%p)\n", xmlbuf);
2826 if (!xmlbuf->
error && expected_ai)
2832 FIXME(
"wrong version for assembly manifest: %u.%u.%u.%u / %u.%u.%u.%u\n",
2846 FIXME(
"wrong version for shared assembly manifest\n");
2907 if (xmlbuf->
ptr != xmlbuf->
end)
2909 FIXME(
"parse error\n");
2941 : ACTIVATION_CONTEXT_PATH_TYPE_NONE;
2960 xmlbuf.
ptr = new_buff;
2974 DPRINT1(
"RtlMultiByteToUnicodeSize failed with %lx\n",
status);
2982 DPRINT1(
"RtlMultiByteToUnicodeN failed with %lx\n",
status);
2986 xmlbuf.
ptr = new_buff;
3000 attr.RootDirectory = 0;
3004 attr.SecurityQualityOfService =
NULL;
3050 else TRACE(
"looking for res %s in module %p %s\n",
debugstr_w(resname),
3068 else if (resname[0] ==
'#')
3099 void *
root,
int want_dir );
3103 void *
root,
int want_dir )
3108 for (
pos =
dir->NumberOfNamedEntries; pos < dir->NumberOfNamedEntries +
dir->NumberOfIdEntries;
pos++)
3110 if (!
entry[
pos].DataIsDirectory == !want_dir)
3136 if (!(
ptr = find_first_id_entry(resdirptr,
root, 1)))
3164 WCHAR resnameBuf[20];
3170 resptr = resnameBuf;
3176 attr.RootDirectory = 0;
3180 attr.SecurityQualityOfService =
NULL;
3225 attr.RootDirectory = 0;
3229 attr.SecurityQualityOfService =
NULL;
3303 static const WCHAR lookup_fmtW[] =
L"%s_%s_%s_%u.%u.*.*_%s_*.manifest";
3304 static const WCHAR wine_trailerW[] = {
'd',
'e',
'a',
'd',
'b',
'e',
'e',
'f',
'.',
'm',
'a',
'n',
'i',
'f',
'e',
's',
't'};
3310 unsigned int data_pos = 0, data_len,
len;
3333 data_len =
io.Information;
3337 if (data_pos >= data_len)
3342 data_len =
io.Information;
3348 else data_pos = data_len;
3352 if (
build < min_build)
continue;
3353 tmp =
wcschr(tmp,
'.') + 1;
3355 if (
build == min_build &&
revision < min_revision)
continue;
3356 tmp =
wcschr(tmp,
'_') + 1;
3357 tmp =
wcschr(tmp,
'_') + 1;
3411 attr.RootDirectory = 0;
3413 attr.ObjectName = &path_us;
3415 attr.SecurityQualityOfService =
NULL;
3439 path[path_us.Length/
sizeof(
WCHAR)] =
'\\';
3466 TRACE(
"looking for name=%s version=%s arch=%s\n",
3497 for (
i = 0;
i < 4;
i++)
3554 FIXME(
"Could not find dependent assembly %s (%s)\n",
3571 return actctx_stack->
ActiveFrame->ActivationContext;
3605 else if (!*
handle && (
class != ActivationContextBasicInformation))
3615 ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION *
data;
3616 ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION_PATH_SEGMENT *
path;
3623 for (
i = 0;
i <
actctx->num_assemblies;
i++)
3631 total_len +=
sizeof(*index);
3633 total_len +=
sizeof(*data);
3636 total_len +=
sizeof(*path);
3646 total_len +=
sizeof(*header);
3653 header->size =
sizeof(*header);
3655 header->index_offset =
sizeof(*header);
3659 for (
i = 0;
i <
actctx->num_assemblies;
i++)
3679 index->name_offset = name_offset;
3682 index->data_len =
sizeof(*data);
3683 index->rosterindex =
i + 1;
3696 data->Size =
sizeof(*data) +
sizeof(*path);
3699 data->PathSegmentCount = 1;
3700 data->PathSegmentOffset =
index->data_offset +
sizeof(*data);
3701 path = (ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION_PATH_SEGMENT *)(
data + 1);
3711 data->Size =
sizeof(*data);
3713 data->TotalPathLength = 0;
3714 data->PathSegmentCount = 0;
3715 data->PathSegmentOffset = 0;
3717 name_offset +=
data->Size +
data->TotalPathLength;
3788 ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION *dll;
3794 DPRINT(
"actctx->dllredirect_section: %p\n",
actctx->dllredirect_section);
3795 if (!
actctx->dllredirect_section)
3814 data->ulDataFormatVersion = 1;
3816 data->ulLength = dll->Size;
3818 data->ulSectionGlobalDataLength = 0;
3819 data->lpSectionBase =
actctx->dllredirect_section;
3824 data->ulAssemblyRosterIndex =
index->rosterindex;
3842 unsigned int i,
j,
k, total_len = 0, class_count = 0;
3849 for (
i = 0;
i <
actctx->num_assemblies;
i++)
3858 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION)
3864 total_len +=
sizeof(*index);
3865 total_len +=
sizeof(*data);
3882 total_len +=
sizeof(*header);
3889 header->size =
sizeof(*header);
3890 header->count = class_count;
3891 header->index_offset =
sizeof(*header);
3895 for (
i = 0;
i <
actctx->num_assemblies;
i++)
3904 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION)
3906 ULONG versioned_len, module_len;
3921 versioned_len =
str.Length;
3924 index->name_offset = name_offset;
3927 index->data_len =
sizeof(*data) + versioned_len + module_len + 2*
sizeof(
WCHAR) ;
3928 index->rosterindex =
i + 1;
3932 data->size =
sizeof(*data);
3934 data->name_len = versioned_len;
3935 data->name_offset =
sizeof(*data);
3947 ptrW[
data->module_len/
sizeof(
WCHAR)] = 0;
3988 if (!
actctx->wndclass_section)
4003 for (
i = 0;
i <
actctx->wndclass_section->count;
i++)
4026 data->ulDataFormatVersion = 1;
4027 data->lpData =
class;
4029 data->ulLength =
class->size +
class->name_len +
class->module_len + 2*
sizeof(
WCHAR);
4031 data->ulSectionGlobalDataLength = 0;
4032 data->lpSectionBase =
actctx->wndclass_section;
4037 data->ulAssemblyRosterIndex =
index->rosterindex;
4055 unsigned int i,
j,
k, total_len = 0, class_count = 0, global_offset = 0, global_len = 0;
4062 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4073 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_WINRT_ACTIVATABLE_CLASSES)
4078 total_len +=
sizeof(*index);
4080 total_len +=
sizeof(*data);
4095 total_len +=
sizeof(*header) + global_len;
4102 header->size =
sizeof(*header);
4103 header->count = class_count;
4105 header->global_len = global_len;
4110 global_offset =
header->size;
4111 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4124 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_WINRT_ACTIVATABLE_CLASSES)
4136 index->name_offset = name_offset;
4139 index->data_len =
sizeof(*data);
4140 index->rosterindex =
i + 1;
4149 data->size =
sizeof(*data);
4152 data->module_offset = global_offset;
4155 name_offset +=
sizeof(*data);
4188 if (!
actctx->activatable_class_section)
4203 for (
i = 0;
i <
actctx->activatable_class_section->count;
i++)
4226 data->ulDataFormatVersion = 1;
4227 data->lpData =
class;
4229 data->ulLength =
class->size +
class->module_len +
sizeof(
WCHAR);
4230 data->lpSectionGlobalData = (
BYTE *)
actctx->activatable_class_section +
actctx->activatable_class_section->global_offset;
4231 data->ulSectionGlobalDataLength =
actctx->activatable_class_section->global_len;
4232 data->lpSectionBase =
actctx->activatable_class_section;
4237 data->ulAssemblyRosterIndex =
index->rosterindex;
4245 unsigned int i,
j,
k, total_len = 0, tlib_count = 0, names_len = 0;
4247 ULONG module_offset, data_offset;
4252 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4261 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION)
4264 total_len +=
sizeof(*index);
4265 total_len +=
sizeof(*data);
4280 total_len +=
sizeof(*header);
4287 header->size =
sizeof(*header);
4288 header->count = tlib_count;
4291 module_offset =
sizeof(*header);
4294 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4303 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION)
4305 ULONG module_len, help_len;
4325 index->data_offset = data_offset;
4327 index->rosterindex =
i + 1;
4331 data->size =
sizeof(*data);
4333 data->name_len = module_len;
4334 data->name_offset = module_offset;
4339 data->help_offset =
sizeof(*data);
4356 data_offset +=
sizeof(*data);
4360 module_offset += module_len +
sizeof(
WCHAR);
4385 if (!
actctx->tlib_section)
4401 data->ulDataFormatVersion = 1;
4402 data->lpData = tlib;
4406 data->ulSectionGlobalDataLength =
actctx->tlib_section->names_len;
4412 data->ulAssemblyRosterIndex =
index->rosterindex;
4426 guid->Data3 &= 0x0fff;
4427 guid->Data3 |= (4 << 12);
4428 guid->Data4[0] &= 0x3f;
4429 guid->Data4[0] |= 0x80;
4433 unsigned int *
count,
unsigned int *
len,
unsigned int *module_len)
4437 for (
i = 0;
i < entities->
num;
i++)
4440 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)
4464 *
module_len +=
sizeof(
L"MSCOREE.DLL") +
sizeof(
L"mscoree.dll");
4487 for (
i = 0;
i < entities->
num;
i++)
4490 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)
4512 (*index)->data_offset = *data_offset;
4513 (*index)->data_len =
sizeof(*data);
4514 (*index)->rosterindex = rosterindex;
4519 alias_index = (*index) +
section->count/2;
4527 data->size =
sizeof(*data);
4529 data->clsid = (*index)->guid;
4541 data->name_len = module_len;
4542 data->name_offset = *module_offset;
4544 data->progid_offset =
data->progid_len ?
data->size : 0;
4545 data->clrdata_len = 0;
4555 if (
data->miscstatus)
4557 if (
data->miscstatuscontent)
4559 if (
data->miscstatusthumbnail)
4561 if (
data->miscstatusicon)
4563 if (
data->miscstatusdocprint)
4567 if (
data->clrdata_offset)
4571 clrdata->
size =
sizeof(*clrdata);
4572 clrdata->
res[0] = 0;
4573 clrdata->
res[1] = 2;
4580 clrdata->
res2[0] = 0;
4581 clrdata->
res2[1] = 0;
4609 if (
data->progid_len)
4610 data->progid_offset +=
data->clrdata_len;
4611 (*index)->data_len +=
sizeof(*clrdata);
4624 if (
data->progid_len)
4628 ptrW[
data->progid_len/
sizeof(
WCHAR)] = 0;
4643 alias_index->
data_len = (*index)->data_len;
4651 (*data_offset) +=
sizeof(*clrdata);
4663 unsigned int i,
j, total_len = 0, class_count = 0, names_len = 0;
4665 ULONG module_offset, data_offset;
4671 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4683 total_len +=
sizeof(*header);
4690 header->size =
sizeof(*header);
4691 header->count = 2*class_count;
4694 module_offset =
sizeof(*header);
4698 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4736 if (!
actctx->comserver_section)
4752 data->ulDataFormatVersion = 1;
4753 data->lpData = comclass;
4757 data->lpSectionGlobalData = (
BYTE*)
actctx->comserver_section +
actctx->comserver_section->names_offset;
4758 data->ulSectionGlobalDataLength =
actctx->comserver_section->names_len;
4759 data->lpSectionBase =
actctx->comserver_section;
4764 data->ulAssemblyRosterIndex =
index->rosterindex;
4773 for (
i = 0;
i < entities->
num;
i++)
4776 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION)
4791 for (
i = 0;
i < entities->
num;
i++)
4794 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION)
4811 (*index)->data_offset = *data_offset;
4813 (*index)->rosterindex = rosterindex;
4816 data->size =
sizeof(*data);
4829 data->iid = (*index)->guid;
4854 data->name_offset =
data->name_len ?
sizeof(*data) : 0;
4866 *data_offset +=
sizeof(*data);
4877 unsigned int i,
j, total_len = 0,
count = 0;
4883 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4895 total_len +=
sizeof(*header);
4902 header->size =
sizeof(*header);
4904 header->index_offset =
sizeof(*header);
4908 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4949 if (!
actctx->ifaceps_section)
4965 data->ulDataFormatVersion = 1;
4966 data->lpData = iface;
4969 data->ulSectionGlobalDataLength = 0;
4970 data->lpSectionBase =
actctx->ifaceps_section;
4975 data->ulAssemblyRosterIndex =
index->rosterindex;
4982 unsigned int i,
j, total_len = 0,
count = 0;
4989 for (
i = 0;
i <
actctx->num_assemblies;
i++)
4995 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES)
4999 total_len +=
sizeof(*index) +
sizeof(*data);
5010 total_len +=
sizeof(*header);
5017 header->size =
sizeof(*header);
5019 header->index_offset =
sizeof(*header);
5023 for (
i = 0;
i <
actctx->num_assemblies;
i++)
5029 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES)
5031 ULONG version_len, name_len;
5051 index->data_offset = data_offset;
5053 index->rosterindex =
i + 1;
5057 data->size =
sizeof(*data);
5073 if (
data->version_len)
5077 ptrW[
data->version_len/
sizeof(
WCHAR)] = 0;
5080 data_offset +=
index->data_len;
5103 if (!
actctx->clrsurrogate_section)
5119 data->ulDataFormatVersion = 1;
5120 data->lpData = surrogate;
5127 data->ulSectionGlobalDataLength = 0;
5128 data->lpSectionBase =
actctx->clrsurrogate_section;
5133 data->ulAssemblyRosterIndex =
index->rosterindex;
5140 unsigned int i,
j, single_len;
5143 for (
i = 0;
i < entities->
num;
i++)
5146 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)
5177 (*index)->name_offset = *data_offset;
5178 (*index)->name_len =
str.Length;
5180 (*index)->data_len =
sizeof(*data);
5181 (*index)->rosterindex = rosterindex;
5187 data->size =
sizeof(*data);
5189 data->clsid_offset = *global_offset;
5194 ptrW[(*index)->name_len/
sizeof(
WCHAR)] = 0;
5201 *global_offset +=
sizeof(
GUID);
5202 *data_offset +=
data->size;
5212 for (
i = 0;
i < entities->
num;
i++)
5215 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION)
5245 unsigned int i,
j, total_len = 0,
count = 0;
5252 for (
i = 0;
i <
actctx->num_assemblies;
i++)
5264 total_len +=
sizeof(*header);
5271 header->size =
sizeof(*header);
5279 global_offset =
header->global_offset;
5281 for (
i = 0;
i <
actctx->num_assemblies;
i++)
5322 if (!
actctx->comserver_section)
5333 if (!
actctx->progid_section)
5351 data->ulDataFormatVersion = 1;
5354 data->lpSectionGlobalData = (
BYTE*)
actctx->progid_section +
actctx->progid_section->global_offset;
5355 data->ulSectionGlobalDataLength =
actctx->progid_section->global_len;
5356 data->lpSectionBase =
actctx->progid_section;
5361 data->ulAssemblyRosterIndex =
index->rosterindex;
5373 switch (section_kind)
5376 case ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION:
5377 DPRINT1(
"Unsupported yet section_kind %x\n", section_kind);
5380 case ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION:
5383 case ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION:
5386 case ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION:
5389 case ACTIVATION_CONTEXT_SECTION_GLOBAL_OBJECT_RENAME_TABLE:
5390 FIXME(
"Unsupported yet section_kind %lx\n", section_kind);
5392 case ACTIVATION_CONTEXT_SECTION_WINRT_ACTIVATABLE_CLASSES:
5396 WARN(
"Unknown section_kind %lx\n", section_kind);
5402 if (
data && (
flags & FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX))
5415 switch (section_kind)
5417 case ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION:
5420 case ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION:
5423 case ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION:
5426 case ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES:
5430 WARN(
"Unknown section_kind %lx\n", section_kind);
5436 if (
flags & FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX)
5448 for (
i = 0;
i <
actctx->num_assemblies;
i++)
5454 if (
entity->
kind == ACTIVATION_CONTEXT_SECTION_APPLICATION_SETTINGS &&
5469 ctx.cbSize =
sizeof(
ctx);
5471 ctx.dwFlags = ACTCTX_FLAG_RESOURCE_NAME_VALID | ACTCTX_FLAG_HMODULE_VALID;
5472 ctx.hModule =
NtCurrentTeb()->ProcessEnvironmentBlock->ImageBaseAddress;
5496 IN PACTIVATION_CONTEXT_DATA ActivationContextData,
5502 const ACTCTXW *pActCtx = (
PVOID)ActivationContextData;
5511 TRACE(
"%p %08lx\n", pActCtx, pActCtx ? pActCtx->dwFlags : 0);
5513#define CHECK_LIMIT( field ) (pActCtx->cbSize >= RTL_SIZEOF_THROUGH_FIELD( ACTCTXW, field ))
5516 ((pActCtx->dwFlags & ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID) && !
CHECK_LIMIT( wProcessorArchitecture )) ||
5517 ((pActCtx->dwFlags & ACTCTX_FLAG_LANGID_VALID) && !
CHECK_LIMIT( wLangId )) ||
5518 ((pActCtx->dwFlags & ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID) && !
CHECK_LIMIT( lpAssemblyDirectory )) ||
5519 ((pActCtx->dwFlags & ACTCTX_FLAG_RESOURCE_NAME_VALID) && !
CHECK_LIMIT( lpResourceName )) ||
5520 ((pActCtx->dwFlags & ACTCTX_FLAG_APPLICATION_NAME_VALID) && !
CHECK_LIMIT( lpApplicationName )) ||
5525 if ((pActCtx->dwFlags & ACTCTX_FLAG_RESOURCE_NAME_VALID) && !pActCtx->lpResourceName)
5533 actctx->config.type = ACTIVATION_CONTEXT_PATH_TYPE_NONE;
5535 actctx->appdir.type = ACTIVATION_CONTEXT_PATH_TYPE_WIN32_FILE;
5536 if (pActCtx->dwFlags & ACTCTX_FLAG_APPLICATION_NAME_VALID)
5546 if (pActCtx->dwFlags & ACTCTX_FLAG_HMODULE_VALID)
module = pActCtx->hModule;
5558 if (pActCtx->lpSource && !((pActCtx->dwFlags & ACTCTX_FLAG_RESOURCE_NAME_VALID) &&
5559 (pActCtx->dwFlags & ACTCTX_FLAG_HMODULE_VALID)))
5564 if (pActCtx->dwFlags & ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID &&
5567 DWORD dir_len, source_len;
5569 dir_len =
wcslen(pActCtx->lpAssemblyDirectory);
5570 source_len =
wcslen(pActCtx->lpSource);
5602 if (pActCtx->dwFlags & ACTCTX_FLAG_LANGID_VALID)
lang = pActCtx->wLangId;
5603 if (pActCtx->dwFlags & ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID)
directory = pActCtx->lpAssemblyDirectory;
5605 if (pActCtx->dwFlags & ACTCTX_FLAG_RESOURCE_NAME_VALID)
5608 if (pActCtx->dwFlags & ACTCTX_FLAG_HMODULE_VALID)
5611 pActCtx->lpResourceName,
lang );
5615 pActCtx->hModule, pActCtx->lpResourceName );
5617 else if (pActCtx->lpSource && pActCtx->lpResourceName)
5620 file, pActCtx->lpResourceName,
lang );
5623 NULL, pActCtx->lpResourceName );
5707 DPRINT(
"ActiveSP %p: ACTIVATE (ActiveFrame %p -> NewFrame %p, Context %p)\n",
5740 DPRINT(
"ActiveSP %p: DEACTIVATE (ActiveFrame %p -> PreviousFrame %p)\n",
5742 NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame,
5780 if (!actctx_stack)
return;
5843 if (retlen) *retlen = 0;
5848 case ActivationContextBasicInformation:
5850 ACTIVATION_CONTEXT_BASIC_INFORMATION *
info =
buffer;
5852 if (retlen) *retlen =
sizeof(*info);
5861 case ActivationContextDetailedInformation:
5863 ACTIVATION_CONTEXT_DETAILED_INFORMATION *acdi =
buffer;
5865 SIZE_T len, manifest_len = 0, config_len = 0, appdir_len = 0;
5876 len =
sizeof(*acdi) + (manifest_len + config_len + appdir_len) *
sizeof(
WCHAR);
5878 if (retlen) *retlen =
len;
5882 acdi->ulFormatVersion =
assembly ? 1 : 0;
5883 acdi->ulAssemblyCount =
actctx->num_assemblies;
5886 acdi->ulRootConfigurationPathType =
actctx->config.type;
5887 acdi->ulRootConfigurationPathChars =
actctx->config.info ? config_len - 1 : 0;
5888 acdi->ulAppDirPathType =
actctx->appdir.type;
5889 acdi->ulAppDirPathChars =
actctx->appdir.info ? appdir_len - 1 : 0;
5893 acdi->lpRootManifestPath =
ptr;
5895 ptr += manifest_len;
5897 else acdi->lpRootManifestPath =
NULL;
5900 acdi->lpRootConfigurationPath =
ptr;
5904 else acdi->lpRootConfigurationPath =
NULL;
5907 acdi->lpAppDirPath =
ptr;
5910 else acdi->lpAppDirPath =
NULL;
5914 case AssemblyDetailedInformationInActivationContext:
5916 ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION *afdi =
buffer;
5932 id_len =
wcslen(assembly_id) + 1;
5941 if (retlen) *retlen =
len;
5949 afdi->ulEncodedAssemblyIdentityLength = (id_len - 1) *
sizeof(
WCHAR);
5953 afdi->ulPolicyPathType = ACTIVATION_CONTEXT_PATH_TYPE_NONE;
5954 afdi->ulPolicyPathLength = 0;
5956 afdi->ulMetadataSatelliteRosterIndex = 0;
5957 afdi->ulManifestVersionMajor = 1;
5958 afdi->ulManifestVersionMinor = 0;
5959 afdi->ulPolicyVersionMajor = 0;
5960 afdi->ulPolicyVersionMinor = 0;
5961 afdi->ulAssemblyDirectoryNameLength = ad_len ? (ad_len - 1) *
sizeof(
WCHAR) : 0;
5963 afdi->lpAssemblyEncodedAssemblyIdentity =
ptr;
5968 afdi->lpAssemblyManifestPath =
ptr;
5971 }
else afdi->lpAssemblyManifestPath =
NULL;
5972 afdi->lpAssemblyPolicyPath =
NULL;
5975 afdi->lpAssemblyDirectoryName =
ptr;
5978 else afdi->lpAssemblyDirectoryName =
NULL;
5983 case FileInformationInAssemblyOfAssemblyInActivationContext:
5985 const ACTIVATION_CONTEXT_QUERY_INDEX *acqi = subinst;
5986 ASSEMBLY_FILE_DETAILED_INFORMATION *afdi =
buffer;
5995 if (acqi->ulAssemblyIndex >=
actctx->num_assemblies)
6004 len =
sizeof(*afdi) + dll_len *
sizeof(
WCHAR);
6008 if (retlen) *retlen =
len;
6011 if (retlen) *retlen = 0;
6012 afdi->ulFlags = ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION;
6013 afdi->ulFilenameLength = dll_len ? (dll_len - 1) *
sizeof(
WCHAR) : 0;
6014 afdi->ulPathLength = 0;
6018 afdi->lpFileName =
ptr;
6020 }
else afdi->lpFileName =
NULL;
6021 afdi->lpFilePath =
NULL;
6025 case CompatibilityInformationInActivationContext:
6030 COMPATIBILITY_CONTEXT_ELEMENT Elements[1];
6044 if (retlen) *retlen =
len;
6055 case RunlevelInformationInActivationContext:
6057 ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION *acrli =
buffer;
6063 len =
sizeof(*acrli);
6064 if (retlen) *retlen =
len;
6077 FIXME(
"class %lu not implemented\n",
class );
6086RtlQueryInformationActiveActivationContext(
ULONG ulInfoClass,
6097 pcbWrittenOrRequired);
6100#define FIND_ACTCTX_RETURN_FLAGS 0x00000002
6101#define FIND_ACTCTX_RETURN_ASSEMBLY_METADATA 0x00000004
6102#define FIND_ACTCTX_VALID_MASK (FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX | FIND_ACTCTX_RETURN_FLAGS | FIND_ACTCTX_RETURN_ASSEMBLY_METADATA)
6110 if (!section_name || !section_name->
Buffer ||
6111 (
flags & ~FIND_ACTCTX_VALID_MASK) ||
6112 ((
flags & FIND_ACTCTX_VALID_MASK) && !
data) ||
6113 (
data &&
data->cbSize <
offsetof(ACTCTX_SECTION_KEYED_DATA, ulAssemblyRosterIndex)))
6115 DPRINT1(
"invalid parameter\n");
6120 if (
flags & FIND_ACTCTX_RETURN_FLAGS ||
6121 flags & FIND_ACTCTX_RETURN_ASSEMBLY_METADATA)
6148 status = RtlpFindActivationContextSection_CheckParameters(
flags,
guid, section_kind, section_name,
data);
6151 DPRINT1(
"RtlFindActivationContextSectionString() failed with status %x\n",
status);
6161 DPRINT(
"RtlFindActivationContextSectionString() failed with status %x\n",
status);
6167 FIXME(
"expected guid == NULL\n");
6170 if (
flags & ~FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX)
6175 if ((
data &&
data->cbSize <
offsetof(ACTCTX_SECTION_KEYED_DATA, ulAssemblyRosterIndex)) ||
6176 !section_name || !section_name->
Buffer)
6178 WARN(
"invalid parameter\n");
6193 DPRINT(
"RtlFindActivationContextSectionString() returns status %x\n",
status);
6206 ACTCTX_SECTION_KEYED_DATA *
data =
ptr;
6214 FIXME(
"expected extguid == NULL\n");
6218 if (
flags & ~FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX)
6273 if (written) *written =
wcslen(
res) + 1;
6299 ContextStack->
Flags = 0;
6305 *
Stack = ContextStack;
6312RtlActivateActivationContextUnsafeFast(
IN PRTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED Frame,
6319 ActiveFrame =
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame;
6321 DPRINT(
"ActiveSP %p: ACTIVATE (ActiveFrame %p -> NewFrame %p, Context %p)\n",
6322 NtCurrentTeb()->ActivationContextStackPointer, ActiveFrame,
6327 ASSERT(Frame->Size >=
sizeof(RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_BASIC));
6330 if (Frame->Size >=
sizeof(RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED))
6351 NewFrame = &Frame->Frame;
6354 Frame->Frame.
Previous = ActiveFrame;
6363 DPRINT(
"Setting new active frame %p instead of old %p\n", NewFrame, ActiveFrame);
6364 NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame = NewFrame;
6369 DPRINT(
"Trying to activate already activated activation context\n");
6373 if (!RtlpNotAllowingMultipleActivation)
6376 NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame = NewFrame;
6380 NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame = NewFrame;
6389RtlDeactivateActivationContextUnsafeFast(
IN PRTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED Frame)
6393 ActiveFrame =
NtCurrentTeb()->ActivationContextStackPointer->ActiveFrame;
6397 ASSERT(Frame->Size >=
sizeof(RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_BASIC));
6405 if (Frame->Size >=
sizeof(RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED))
6420 DPRINT1(
"Deactivating not really activated activation context\n");
6422 return &Frame->Frame;
6426 NewFrame = &Frame->Frame;
6427 if (ActiveFrame != NewFrame)
6429 DPRINT1(
"Deactivating wrong active frame: %p != %p\n", ActiveFrame, NewFrame);
6432 DPRINT(
"ActiveSP %p: DEACTIVATE (ActiveFrame %p -> PreviousFrame %p)\n",
6452 __wine_dbch_actctx.flags = 0x03;
6460 ctx.cbSize =
sizeof(
ctx);
6475 DPRINT1(
"Failed to create the implicit act ctx. Status: 0x%x!!!\n",
Status);
NTSTATUS NTAPI NtUnmapViewOfSection(IN HANDLE ProcessHandle, IN PVOID BaseAddress)
NTSTATUS NTAPI NtCreateSection(OUT PHANDLE SectionHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN PLARGE_INTEGER MaximumSize OPTIONAL, IN ULONG SectionPageProtection OPTIONAL, IN ULONG AllocationAttributes, IN HANDLE FileHandle OPTIONAL)
NTSTATUS NTAPI NtMapViewOfSection(IN HANDLE SectionHandle, IN HANDLE ProcessHandle, IN OUT PVOID *BaseAddress, IN ULONG_PTR ZeroBits, IN SIZE_T CommitSize, IN OUT PLARGE_INTEGER SectionOffset OPTIONAL, IN OUT PSIZE_T ViewSize, IN SECTION_INHERIT InheritDisposition, IN ULONG AllocationType, IN ULONG Protect)
static UCHAR NotificationContext
struct mke2fs_defaults settings[]
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static const WCHAR nameW[]
#define FILE_DIRECTORY_FILE
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define STATUS_NOT_IMPLEMENTED
#define NT_SUCCESS(StatCode)
IMAGE_RESOURCE_DIRECTORY * find_entry_by_name(IMAGE_RESOURCE_DIRECTORY *dir, LPCWSTR name, void *root, int want_dir)
IMAGE_RESOURCE_DIRECTORY * find_first_entry(IMAGE_RESOURCE_DIRECTORY *dir, void *root, int want_dir)
static const WCHAR quote[]
static WCHAR unknown[MAX_STRING_RESOURCE_LEN]
const char * wine_dbg_sprintf(const char *format,...)
#define INVALID_HANDLE_VALUE
#define GetCurrentProcess()
#define RtlImageDirectoryEntryToData
#define __EXCEPT_PAGE_FAULT
static const WCHAR version[]
const WCHAR windows_dir[]
_ACRTIMP __msvcrt_ulong __cdecl wcstoul(const wchar_t *, wchar_t **, int)
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP int __cdecl wcsncmp(const wchar_t *, const wchar_t *, size_t)
int WINAPIV _swprintf(wchar_t *str, const wchar_t *format,...)
static const ULONG lookup[16]
#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
#define InterlockedCompareExchangePointer
NTSTATUS NTAPI NtQueryDirectoryFile(IN HANDLE FileHandle, IN HANDLE EventHandle OPTIONAL, IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, IN PVOID ApcContext OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, OUT PVOID FileInformation, IN ULONG Length, IN FILE_INFORMATION_CLASS FileInformationClass, IN BOOLEAN ReturnSingleEntry, IN PUNICODE_STRING FileName OPTIONAL, IN BOOLEAN RestartScan)
VOID NTAPI LdrpInitializeProcessCompat(PVOID pProcessActctx, PVOID *pOldShimData)
NTSTATUS NTAPI RtlpInitializeActCtx(PVOID *pOldShimData)
NTSTATUS NTAPI LdrUnlockLoaderLock(_In_ ULONG Flags, _In_opt_ ULONG_PTR Cookie)
NTSTATUS NTAPI LdrLockLoaderLock(_In_ ULONG Flags, _Out_opt_ PULONG Disposition, _Out_opt_ PULONG_PTR Cookie)
NTSTATUS NTAPI LdrFindEntryForAddress(_In_ PVOID Address, _Out_ PLDR_DATA_TABLE_ENTRY *Module)
NTSTATUS NTAPI LdrAccessResource(_In_ PVOID BaseAddress, _In_ PIMAGE_RESOURCE_DATA_ENTRY ResourceDataEntry, _Out_opt_ PVOID *Resource, _Out_opt_ PULONG Size)
NTSTATUS NTAPI LdrFindResource_U(_In_ PVOID BaseAddress, _In_ PLDR_RESOURCE_INFO ResourceInfo, _In_ ULONG Level, _Out_ PIMAGE_RESOURCE_DATA_ENTRY *ResourceDataEntry)
NTSTATUS NTAPI LdrFindResourceDirectory_U(_In_ PVOID BaseAddress, _In_ PLDR_RESOURCE_INFO ResourceInfo, _In_ ULONG Level, _Out_ PIMAGE_RESOURCE_DIRECTORY *ResourceDirectory)
_In_ PCWSTR _Out_ PVOID * ActCtx
#define memcpy(s1, s2, n)
static SIZE_T *static const GUID PACTCTX_SECTION_KEYED_DATA
static SIZE_T *static const GUID ULONG
#define GUIDSECTION_MAGIC
@ ThreadingModel_Apartment
static HANDLE PIO_APC_ROUTINE PVOID PIO_STATUS_BLOCK io
#define HASH_STRING_ALGORITHM_X65599
NTSYSAPI ULONG NTAPI RtlUniform(_In_ PULONG Seed)
NTSYSAPI NTSTATUS NTAPI RtlFindActivationContextSectionGuid(ULONG flags, const GUID *extguid, ULONG section_kind, const GUID *guid, void *ptr)
NTSYSAPI NTSTATUS NTAPI RtlHashUnicodeString(_In_ CONST UNICODE_STRING *String, _In_ BOOLEAN CaseInSensitive, _In_ ULONG HashAlgorithm, _Out_ PULONG HashValue)
NTSYSAPI BOOLEAN NTAPI RtlIsTextUnicode(_In_ CONST VOID *Buffer, _In_ INT Size, _Inout_opt_ INT *Flags)
NTSYSAPI RTL_PATH_TYPE NTAPI RtlDetermineDosPathNameType_U(_In_ PCWSTR Path)
_Must_inspect_result_ NTSYSAPI LONG NTAPI RtlCompareUnicodeStrings(_In_reads_(String1Length) PCWCH String1, _In_ SIZE_T String1Length, _In_reads_(String2Length) PCWCH String2, _In_ SIZE_T String2Length, _In_ BOOLEAN CaseInSensitive)
DECLSPEC_NORETURN NTSYSAPI VOID NTAPI RtlRaiseStatus(_In_ NTSTATUS Status)
NTSYSAPI ULONG NTAPI RtlGetFullPathName_U(_In_ PCWSTR FileName, _In_ ULONG Size, _Out_z_bytecap_(Size) PWSTR Buffer, _Out_opt_ PWSTR *ShortName)
NTSYSAPI SIZE_T NTAPI RtlSizeHeap(_In_ PVOID HeapHandle, _In_ ULONG Flags, _In_ PVOID MemoryPointer)
NTSYSAPI BOOLEAN NTAPI RtlDosPathNameToNtPathName_U(_In_opt_z_ PCWSTR DosPathName, _Out_ PUNICODE_STRING NtPathName, _Out_opt_ PCWSTR *NtFileNamePart, _Out_opt_ PRTL_RELATIVE_NAME_U DirectoryInfo)
#define RTL_ACTIVATION_CONTEXT_STACK_FRAME_FLAG_NOT_REALLY_ACTIVATED
#define RTL_ACTIVATION_CONTEXT_STACK_FRAME_FLAG_ACTIVATED
#define RTL_QUERY_ACTIVATION_CONTEXT_FLAG_IS_ADDRESS
#define RTL_QUERY_ACTIVATION_CONTEXT_FLAG_IS_HMODULE
#define RTL_DEACTIVATE_ACTIVATION_CONTEXT_FLAG_FORCE_EARLY_DEACTIVATION
#define RTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_FORMAT_WHISTLER
#define RTL_ACTIVATION_CONTEXT_STACK_FRAME_FLAG_DEACTIVATED
#define RTL_QUERY_ACTIVATION_CONTEXT_FLAG_NO_ADDREF
#define RTL_ACTIVATION_CONTEXT_STACK_FRAME_FLAG_HEAP_ALLOCATED
#define RTL_QUERY_ACTIVATION_CONTEXT_FLAG_USE_ACTIVE_ACTIVATION_CONTEXT
NTSYSAPI NTSTATUS NTAPI NtOpenFile(OUT PHANDLE phFile, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN ULONG ShareMode, IN ULONG OpenMode)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
NTSYSAPI BOOLEAN NTAPI RtlEqualUnicodeString(PUNICODE_STRING String1, PUNICODE_STRING String2, BOOLEAN CaseInSensitive)
#define HEAP_GENERATE_EXCEPTIONS
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)
#define FILE_SHARE_DELETE
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
#define STANDARD_RIGHTS_REQUIRED
#define STATUS_SXS_CANT_GEN_ACTCTX
#define STATUS_INVALID_IMAGE_FORMAT
#define STATUS_SXS_ASSEMBLY_NOT_FOUND
#define STATUS_DLL_NOT_FOUND
#define STATUS_SXS_EARLY_DEACTIVATION
#define STATUS_RESOURCE_NAME_NOT_FOUND
#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 OBJ_CASE_INSENSITIVE
#define RtlUTF8ToUnicodeN
#define offsetof(TYPE, MEMBER)
XML_HIDDEN void xmlParserErrors const char const xmlChar const xmlChar * str2
XML_HIDDEN void xmlParserErrors const char const xmlChar * str1
static void read_xml_elem(xmlbuf_t *xmlbuf, struct xml_elem *elem)
#define ACTCTX_FAKE_HANDLE
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 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 NTSTATUS open_nt_file(HANDLE *handle, UNICODE_STRING *name)
@ ASSEMBLY_SHARED_MANIFEST
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 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 WCHAR * build_assembly_dir(struct assembly_identity *ai)
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)
enum tagLIBFLAGS LIBFLAGS
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 BOOL xml_name_cmp(const struct xml_elem *elem1, const struct xml_elem *elem2)
static NTSTATUS add_ifaceps_record(struct guidsection_header *section, struct entity_array *entities, struct guid_index **index, ULONG *data_offset, ULONG rosterindex)
static WCHAR * lookup_manifest_file(HANDLE dir, struct assembly_identity *ai)
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 int aligned_string_len(int len)
static const WCHAR current_archW[]
static struct wndclass_redirect_data * get_wndclass_data(ACTIVATION_CONTEXT *ctxt, struct string_index *index)
static const WCHAR windowsSettings2011NSW[]
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 void parse_noinherit_elem(xmlbuf_t *xmlbuf, const struct xml_elem *parent)
static BOOL parse_text_content(xmlbuf_t *xmlbuf, xmlstr_t *content)
static void parse_activatable_class_elem(xmlbuf_t *xmlbuf, struct dll_redirect *dll, struct actctx_loader *acl, const struct xml_elem *parent)
static OLEMISC get_olemisc_value(const WCHAR *str, int len)
struct _ACTIVATION_CONTEXT ACTIVATION_CONTEXT
static NTSTATUS find_first_manifest_resource_in_module(HANDLE hModule, const WCHAR **resname)
static ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION * get_dllredirect_data(ACTIVATION_CONTEXT *ctxt, struct string_index *index)
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 struct progidredirect_data * get_progid_data(ACTIVATION_CONTEXT *actctx, const struct string_index *index)
static struct activatable_class_data * get_activatable_class_data(ACTIVATION_CONTEXT *ctxt, 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 struct entity * add_entity(struct entity_array *array, DWORD kind)
static NTSTATUS build_activatable_class_section(ACTIVATION_CONTEXT *actctx, struct strsection_header **section)
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 void free_depend_manifests(struct actctx_loader *acl)
static WCHAR * xmlstrdupW(const xmlstr_t *str)
static BOOL is_xmlns_attr(const struct xml_attr *attr)
static ACTIVATION_CONTEXT system_actctx
static HANDLE get_current_actctx_no_addref(void)
static WCHAR * strdupW(const WCHAR *str)
static ACTIVATION_CONTEXT * process_actctx
static NTSTATUS parse_depend_manifests(struct actctx_loader *acl)
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 NTSTATUS get_module_filename(HMODULE module, UNICODE_STRING *str, unsigned int extra_len)
void WINAPI RtlFreeActivationContextStack(ACTIVATION_CONTEXT_STACK *actctx_stack)
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 winrtv1W[]
static NTSTATUS build_ifaceps_section(ACTIVATION_CONTEXT *actctx, struct guidsection_header **section)
static const WCHAR asmv1W[]
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 void parse_maxversiontested_elem(xmlbuf_t *xmlbuf, struct assembly *assembly, struct actctx_loader *acl, const struct xml_elem *parent)
static void parse_file_elem(xmlbuf_t *xmlbuf, struct assembly *assembly, struct actctx_loader *acl, const struct xml_elem *parent)
static NTSTATUS build_wndclass_section(ACTIVATION_CONTEXT *actctx, struct strsection_header **section)
static xmlstr_t find_xmlns(xmlbuf_t *xmlbuf, const xmlstr_t *name)
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 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[]
@ ACTIVATABLE_CLASS_SECTION
NTSTATUS WINAPI RtlQueryActivationContextApplicationSettings(DWORD flags, HANDLE handle, const WCHAR *ns, const WCHAR *settings, WCHAR *buffer, SIZE_T size, SIZE_T *written)
static void parse_supportedos_elem(xmlbuf_t *xmlbuf, struct assembly *assembly, struct actctx_loader *acl, const struct xml_elem *parent)
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 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 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 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 NTSTATUS find_query_actctx(HANDLE *handle, DWORD flags, ULONG class)
#define CHECK_LIMIT(field)
static struct clrsurrogate_data * get_surrogate_data(ACTIVATION_CONTEXT *actctx, const struct guid_index *index)
static const char * debugstr_xml_elem(const struct xml_elem *elem)
static BOOL set_error(xmlbuf_t *xmlbuf)
static BOOL is_matching_string(const WCHAR *str1, const WCHAR *str2)
static 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 NTSTATUS build_progid_section(ACTIVATION_CONTEXT *actctx, struct strsection_header **section)
static void parse_cominterface_proxy_stub_elem(xmlbuf_t *xmlbuf, struct dll_redirect *dll, struct actctx_loader *acl, const struct xml_elem *parent)
static BOOL xml_attr_cmp(const struct xml_attr *attr, const WCHAR *str)
static void parse_dependent_assembly_elem(xmlbuf_t *xmlbuf, struct actctx_loader *acl, const struct xml_elem *parent, BOOL optional)
static const char * debugstr_version(const struct assembly_version *ver)
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 windowsSettings2017NSW[]
static const WCHAR windowsSettings2016NSW[]
static const WCHAR * find_app_settings(ACTIVATION_CONTEXT *actctx, const WCHAR *settings, const WCHAR *ns)
static void generate_uuid(ULONG *seed, GUID *guid)
static void free_assembly_identity(struct assembly_identity *ai)
static NTSTATUS find_activatable_class(ACTIVATION_CONTEXT *actctx, const UNICODE_STRING *name, PACTCTX_SECTION_KEYED_DATA data)
static const WCHAR windowsSettings2019NSW[]
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 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 windowsSettings2020NSW[]
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 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 NTSTATUS find_window_class(ACTIVATION_CONTEXT *actctx, const UNICODE_STRING *name, PACTCTX_SECTION_KEYED_DATA data)
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 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 int get_assembly_version(struct assembly *assembly, WCHAR *ret)
static const char * debugstr_xml_attr(const struct xml_attr *attr)
static void parse_security_elem(xmlbuf_t *xmlbuf, struct assembly *assembly, struct actctx_loader *acl, const struct xml_elem *parent)
static void parse_dependency_elem(xmlbuf_t *xmlbuf, struct actctx_loader *acl, const struct xml_elem *parent)
static const WCHAR windowsSettings2005NSW[]
static BOOL is_matching_identity(const struct assembly_identity *id1, const struct assembly_identity *id2)
static struct string_index * get_activatable_class_first_index(ACTIVATION_CONTEXT *actctx)
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 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 enum comclass_threadingmodel parse_com_class_threadingmodel(xmlstr_t *value)
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 BOOL parse_xml_header(xmlbuf_t *xmlbuf)
#define STATUS_BUFFER_TOO_SMALL
PULONG MinorVersion OPTIONAL
LIST_ENTRY FrameListCache
ULONG NextCookieSequenceNumber
struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME * ActiveFrame
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 strsection_header * activatable_class_section
struct guidsection_header * clrsurrogate_section
unsigned int num_assemblies
WORD NumberOfNamedEntries
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::@5284::@5285 typelib
DWORD miscstatusthumbnail
struct entity::@5284::@5291 activatable_class
struct entity::@5284::@5287 ifaceps
struct entity::@5284::@5286 comclass
struct entity::@5284::@5289 clrsurrogate
struct entity::@5284::@5288 class
struct entity::@5284::@5290 settings
struct xml_attr namespaces[MAX_NAMESPACES]
Character const *const prefix
#define FIELD_OFFSET(t, f)
#define STATUS_INVALID_PARAMETER
#define STATUS_NO_SUCH_FILE
static const WCHAR lang[]
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
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 NTSTATUS WINAPI RtlGUIDFromString(PUNICODE_STRING, GUID *)
NTSYSAPI PVOID WINAPI RtlReAllocateHeap(HANDLE, ULONG, PVOID, SIZE_T) __WINE_ALLOC_SIZE(4) __WINE_DEALLOC(RtlFreeHeap
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 *)
LPCSTR debugstr_us(const UNICODE_STRING *us)
#define ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION_PATH_OMITS_ASSEMBLY_ROOT
#define IS_TEXT_UNICODE_REVERSE_SIGNATURE
#define ACTIVATION_CONTEXT_DATA_DLL_REDIRECTION_PATH_EXPAND
#define IS_TEXT_UNICODE_SIGNATURE
#define CREATEPROCESS_MANIFEST_RESOURCE_ID
_Must_inspect_result_ _In_ ULONG Flags
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
#define RtlUshortByteSwap(_x)