RawPerformDevIoCtrl

INT64 __stdcall RawPerformDevIoCtrl(DEVICE_OBJECT *Device, PVOID OutputBuffer){
  PIRP v3; 
  INT64 result; 
  struct _IO_STATUS_BLOCK IoStatusBlock; 
  struct _KEVENT Event; 
  PVOID v7; 
  IoStatusBlock.Pointer = 0i64;
  IoStatusBlock.Information = 0i64;
  memset(&Event, 0, sizeof(Event));
  KeInitializeEvent(&Event, NotificationEvent, 0);
  v3 = IoBuildDeviceIoControlRequest(
         0x70000u,
         (PDEVICE_OBJECT)OutputBuffer,
         0i64,
         0,
         v7,
         0x18u,
         0,
         &Event,
         &IoStatusBlock);
  if( !v3 )
    return 3221225626i64;
  *(_BYTE *)(*((_QWORD *)v3 + 23) - 70i64) |= 2u;
  LODWORD(result) = IofCallDriver((PDEVICE_OBJECT)OutputBuffer, v3);
  if( (_DWORD)result == 259 )
  {
    KeWaitForSingleObject(&Event, Executive, 0, 0, 0i64);
    return(unsigned int)IoStatusBlock.Status;
  }
  return result;
}

Referenced by:

RawQueryFileSystemInformation