ArbInitializeMmConfigRange
NTSTATUS __stdcall ArbInitializeMmConfigRange(PVOID Data){
NTSTATUS result;
int v3;
UINT64 DataSize;
struct _UNICODE_STRING ValueName;
struct _OBJECT_ATTRIBUTES ObjectAttributes;
void *KeyHandle;
HANDLE Handle;
KeyHandle = 0i64;
*(&ObjectAttributes.Length + 1) = 0;
memset(&ObjectAttributes.Attributes + 1, 0, 20);
Handle = 0i64;
*(_DWORD *)(&ValueName.MaximumLength + 1) = 0;
ObjectAttributes.RootDirectory = 0i64;
ValueName.Buffer = L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\Arbiters";
*(_DWORD *)&ValueName.Length = 7733366;
ObjectAttributes.ObjectName = &ValueName;
ObjectAttributes.Length = 48;
ObjectAttributes.Attributes = 576;
result = ZwOpenKey(&KeyHandle, 0x2001Fu, &ObjectAttributes);
if( result >= 0 )
{
*(_DWORD *)&ValueName.Length = 2228258;
ValueName.Buffer = L"ReservedResources";
ObjectAttributes.RootDirectory = KeyHandle;
ObjectAttributes.Length = 48;
ObjectAttributes.ObjectName = &ValueName;
ObjectAttributes.Attributes = 576;
*(_OWORD *)&ObjectAttributes.SecurityDescriptor = 0i64;
v3 = ZwOpenKey(&Handle, 0x2001Fu, &ObjectAttributes);
if( v3 >= 0 )
{
ValueName.Buffer = L"MmConfigRange";
LODWORD(DataSize) = *(_DWORD *)Data;
*(_DWORD *)&ValueName.Length = 1703962;
v3 = ZwSetValueKey(Handle, &ValueName, 0i64, 0xAui64, Data, DataSize);
ZwClose(Handle);
}
ZwClose(KeyHandle);
return v3;
}
return result;
}Referenced by:
HalpPciReportMmConfigAddressRange