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