IopWriteResourceList
NTSTATUS __stdcall IopWriteResourceList(
PVOID ResourceMapKey,
UNICODE_STRING *ClassName,
UNICODE_STRING *DriverName,
UNICODE_STRING *DeviceName,
CM_RESOURCE_LIST *ResourceList,
UINT64 ResourceListSize){
int RegistryKey;
UNICODE_STRING *v9;
void *v10;
NTSTATUS v11;
PVOID Data;
PVOID Dataa;
UINT64 DataSize;
HANDLE Handle;
void *KeyHandle[2];
Handle = 0i64;
KeyHandle[0] = 0i64;
LODWORD(Data) = 1;
RegistryKey = IopCreateRegistryKeyEx(&Handle, ResourceMapKey, ClassName, 0x2001Fui64, (UINT64)Data, 0i64);
if( RegistryKey >= 0 )
{
LODWORD(Dataa) = 1;
RegistryKey = IopCreateRegistryKeyEx(KeyHandle, Handle, DriverName, 0x2001Fui64, (UINT64)Dataa, 0i64);
ZwClose(Handle);
if( RegistryKey >= 0 )
{
v9 = DeviceName;
v10 = KeyHandle[0];
if( *(_DWORD *)ResourceList )
{
LODWORD(DataSize) = ResourceListSize;
v11 = ZwSetValueKey(KeyHandle[0], v9, 0i64, 8ui64, ResourceList, DataSize);
}
else
{
v11 = ZwDeleteValueKey(KeyHandle[0], v9);
}
RegistryKey = v11;
ZwClose(v10);
}
}
return RegistryKey;
}Referenced by:
IoReportHalResourceUsage
IopInitializeResourceMap
PnpBuildCmResourceList