HalpDmaControllerValidateRequestLineBinding

NTSTATUS __stdcall HalpDmaControllerValidateRequestLineBinding(
        _HALP_DMA_CONTROLLER *DmaController,
        _DEVICE_DESCRIPTION *DeviceDescriptor){
  char v3; 
  unsigned __int8 CurrentIrql; 
  unsigned __int64 *p_Lock; 
  NTSTATUS result; 
  char v7; 
  unsigned int DmaRequestLine; 
  unsigned int DmaChannel; 

  DmaRequestLine = DeviceDescriptor->DmaRequestLine;
  v3 = 0;
  DmaChannel = DeviceDescriptor->DmaChannel;
  CurrentIrql = KeGetCurrentIrql();
  if( CurrentIrql == 15 )
  {
    p_Lock = &DmaController->Lock;
  }
  else
  {
    CurrentIrql = KeGetCurrentIrql();
    __writecr8(DmaController->Irql);
    p_Lock = &DmaController->Lock;
    KxAcquireSpinLock(&DmaController->Lock);
    v3 = 1;
  }
  result = ((__int64(__fastcall *)(void *, unsigned int *))DmaController->Operations.ValidateRequestLineBinding)(
             DmaController->ExtensionData,
             &DmaRequestLine);
  v7 = result;
  if( v3 )
  {
    KxReleaseSpinLock(p_Lock);
    result = CurrentIrql;
    __writecr8(CurrentIrql);
  }
  LOBYTE(result) = v7;
  return result;
}

Referenced by:

HalGetAdapterV3