IopWriteResourceList
NTSTATUS __stdcall IopWriteResourceList(
PVOID ResourceMapKey,
_UNICODE_STRING *ClassName,
_UNICODE_STRING *DriverName,
_UNICODE_STRING *DeviceName,
_CM_RESOURCE_LIST *ResourceList,
UINT64 ResourceListSize){
int v8;
_OBJECT_TYPE *v9;
_UNICODE_STRING *v10;
_HANDLE v11;
NTSTATUS v12;
UINT64 CreateOptions;
UINT64 CreateOptionsa;
UINT64 DataSize;
PVOID BaseHandle;
PVOID Handle;
BaseHandle = 0i64;
Handle = 0i64;
LODWORD(CreateOptions) = 1;
v8 = IopCreateRegistryKeyEx(&BaseHandle, ResourceMapKey, ClassName, 0x2001Fui64, CreateOptions, 0i64);
if( v8 >= 0 )
{
LODWORD(CreateOptionsa) = 1;
v8 = IopCreateRegistryKeyEx(&Handle, BaseHandle, DriverName, 0x2001Fui64, CreateOptionsa, 0i64);
ZwClose((_HANDLE)BaseHandle);
if( v8 >= 0 )
{
v10 = DeviceName;
v11 = (int)Handle;
if( ResourceList->Count )
{
LODWORD(DataSize) = ResourceListSize;
v12 = ZwSetValueKey(Handle, v10, 0i64, 8ui64, ResourceList, DataSize);
}
else
{
v12 = ZwDeleteValueKey(Handle, v10, v9);
}
v8 = v12;
ZwClose(v11);
}
}
return v8;
}Referenced by:
IoReportHalResourceUsage
IopInitializeResourceMap
PnpBuildCmResourceList