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