HalpQueryPccInterface

__int64 __fastcall HalpQueryPccInterface(
        PDEVICE_OBJECT DeviceObject,
        __int64 a2,
        __int64 a3,
        __int64 a4,
        int a5,
        void *a6){
  DEVICE_OBJECT *AttachedDeviceReference; 
  IRP *v8; 
  __int64 v9; 
  unsigned int Status; 
  IO_STATUS_BLOCK IoStatusBlock; 
  struct _KEVENT Event; 
  VOID *ReturnAddress; 
  memset(&Event, 0, sizeof(Event));
  IoStatusBlock = 0i64;
  memset((INT64)a6, 0i64);
  *((_DWORD *)a6 + 8) = a5;
  *(_DWORD *)a6 = 65664;
  KeInitializeEvent(&Event, NotificationEvent, 0);
  AttachedDeviceReference = IoGetAttachedDeviceReference(DeviceObject);
  v8 = IopBuildSynchronousFsdRequest(
         0x1Bui64,
         AttachedDeviceReference,
         0i64,
         0i64,
         0i64,
         &Event,
         &IoStatusBlock,
         ReturnAddress);
  if( v8 )
  {
    v9 = *((_QWORD *)v8 + 23);
    *((_BYTE *)v8 + 64) = 0;
    *((_DWORD *)v8 + 12) = -1073741637;
    *(_QWORD *)(v9 - 40) = 0i64;
    *(_QWORD *)(v9 - 64) = &GUID_PCC_INTERFACE_STANDARD;
    *(_BYTE *)(v9 - 71) = 8;
    *(_DWORD *)(v9 - 56) = 65664;
    *(_QWORD *)(v9 - 48) = a6;
    Status = IofCallDriver(AttachedDeviceReference, v8);
    if( Status == 259 )
    {
      KeWaitForSingleObject(&Event, Executive, 0, 0, 0i64);
      Status = IoStatusBlock.Status;
    }
  }
  else
  {
    Status = -1073741670;
  }
  HalPutDmaAdapter((PADAPTER_OBJECT)AttachedDeviceReference);
  return Status;
}

Referenced by:

HalpAcquirePccInterface