IopGetRegistryValues

VOID __fastcall IopGetRegistryValues(VOID *KeyHandle, _KEY_VALUE_FULL_INFORMATION **ValueList, UINT64 Length){
  _KEY_VALUE_FULL_INFORMATION **v3; 
  NTSTATUS RegistryValue; 
  NTSTATUS v6; 

  v3 = ValueList + 1;
  *ValueList = 0i64;
  ValueList[2] = 0i64;
  ValueList[1] = 0i64;
  RegistryValue = IopGetRegistryValue(KeyHandle, (PWCHAR)L"Identifier", 0x28ui64, ValueList);
  if( (int)(RegistryValue + 0x80000000) < 0 || RegistryValue == -1073741772 )
  {
    v6 = IopGetRegistryValue(KeyHandle, (PWCHAR)L"Configuration Data", 0x24ui64, v3);
    if( ((v6 + 0x80000000) & 0x80000000) != 0 || v6 == -1073741772 )
      IopGetRegistryValue(KeyHandle, (PWCHAR)L"Component Information", 0x18ui64, v3 + 1);
  }
}

Referenced by:

pIoQueryBusDescription
pIoQueryDeviceDescription