IoQueryDeviceDescription

INT64 __stdcall IoQueryDeviceDescription(RTL_RANGE_LIST *InvertedRangeList, RTL_RANGE_LIST *RangeList){
  unsigned int *v2; 
  unsigned int *v3; 
  NTSTATUS v4; 
  HANDLE Handle; 
  struct _UNICODE_STRING Destination; 
  struct _UNICODE_STRING v8; 
  unsigned int *v9[8]; 
  unsigned int v10; 
  PCONFIGURATION_TYPE PeripheralType; 
  PULONG PeripheralNumber; 
  PIO_QUERY_DEVICE_ROUTINE CalloutRoutine; 
  PVOID Context; 
  Handle = 0i64;
  v10 = -1;
  Destination = 0i64;
  if( !InvertedRangeList )
    return 3221225474i64;
  v9[4] = (unsigned int *)PeripheralType;
  v9[5] = PeripheralNumber;
  v9[6] = (unsigned int *)CalloutRoutine;
  v9[1] = (unsigned int *)RangeList;
  v9[0] = (unsigned int *)InvertedRangeList;
  v9[2] = v2;
  v9[7] = (unsigned int *)Context;
  v9[3] = v3;
  Destination.MaximumLength = 2048;
  Destination.Buffer = (wchar_t *)ExAllocatePoolWithTag(PagedPool, 0x800ui64, 0x4E526F49ui64);
  if( !Destination.Buffer )
    return 3221225626i64;
  RtlAppendUnicodeStringToString(&Destination, &CmRegistryMachineHardwareDescriptionSystemName);
  v4 = IopOpenRegistryKey(&Handle, 0i64, &Destination, 0x20019ui64, 0);
  if( v4 >= 0 )
  {
    v8 = Destination;
    v4 = pIoQueryBusDescription(v9, &v8, Handle, &v10, 1);
    ZwClose(Handle);
  }
  ExFreePoolWithTag(Destination.Buffer, 0);
  if( v4 == -2147483622 )
    return(unsigned int)-1073741772;
  return(unsigned int)v4;
}

Referenced by:

No references.