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