ArbpGetRegistryValue
INT64 __stdcall ArbpGetRegistryValue(PVOID KeyHandle, WCHAR *ValueName, KEY_VALUE_FULL_INFORMATION **Information){
NTSTATUS v5;
KEY_VALUE_FULL_INFORMATION *PoolWithTag;
KEY_VALUE_FULL_INFORMATION *v7;
NTSTATUS v8;
struct _UNICODE_STRING ValueNamea;
ULONG ResultLength;
ResultLength = 0;
ValueNamea = 0i64;
RtlInitUnicodeString(&ValueNamea, ValueName, (WCHAR)Information);
v5 = ZwQueryValueKey(KeyHandle, &ValueNamea, KeyValueFullInformationAlign64, 0i64, 0, &ResultLength);
if( v5 != -1073741789 && v5 != -2147483643 )
return 3221225473i64;
PoolWithTag = (KEY_VALUE_FULL_INFORMATION *)ExAllocatePoolWithTag(PagedPool, ResultLength, 0x4D627241ui64);
v7 = PoolWithTag;
if( !PoolWithTag )
return 3221225626i64;
v8 = ZwQueryValueKey(KeyHandle, &ValueNamea, KeyValueFullInformationAlign64, PoolWithTag, ResultLength, &ResultLength);
if( v8 < 0 )
{
ExFreePoolWithTag(v7, 0);
return(unsigned int)v8;
}
else
{
*Information = v7;
return 0i64;
}
}Referenced by:
ArbAddInaccessibleAllocationRange
ArbAddMmConfigRangeAsBootReserved
ArbBuildAssignmentOrdering