SmKmSendDeviceControl

NTSTATUS __stdcall SmKmSendDeviceControl(
        _DEVICE_OBJECT *DeviceObject,
        VOID *OutputBuffer,
        UINT64 OutputBufferSize,
        INT64 a4,
        PVOID OutputBuffera,
        ULONG OutputBufferLength){
  PIRP *v7; 
  NTSTATUS result; 
  _IO_STATUS_BLOCK IoStatusBlock; 
  char Object[40]; 

  IoStatusBlock = 0i64;
  KeInitializeEvent((INT64)Object, 0, 0);
  v7 = IoBuildDeviceIoControlRequest(
         0x4D0000u,
         (PDEVICE_OBJECT)OutputBuffer,
         0i64,
         0,
         OutputBuffera,
         OutputBufferLength,
         0,
         (PKEVENT)Object,
         &IoStatusBlock);
  if( !v7 )
    return -1073741670;
  result = IofCallDriver((UINT64)OutputBuffer, (UINT64)v7);
  if( result == 259 )
  {
    KeWaitForSingleObject((UINT64)Object, 0, 0, 0, 0i64);
    return IoStatusBlock.Status;
  }
  return result;
}

Referenced by:

SmKmVolumeQueryUniqueId