HalpDmaControllerReadDmaCounter
NTSTATUS __stdcall HalpDmaControllerReadDmaCounter(_HALP_DMA_CONTROLLER *DmaController, UINT64 ChannelNumber){
__int64 v2;
unsigned __int8 CurrentIrql;
char v5;
unsigned __int64 *p_Lock;
NTSTATUS v7;
v2 = (unsigned int)ChannelNumber;
CurrentIrql = KeGetCurrentIrql();
v5 = 0;
if( CurrentIrql == 15 )
{
p_Lock = &DmaController->Lock;
}
else
{
CurrentIrql = KeGetCurrentIrql();
__writecr8(DmaController->Irql);
p_Lock = &DmaController->Lock;
KxAcquireSpinLock(&DmaController->Lock);
v5 = 1;
}
v7 = DmaController->Operations.ReadDmaCounter(DmaController->ExtensionData, v2);
if( !v7 )
DmaController->Channels[v2].Complete = 1;
if( v5 )
{
KxReleaseSpinLock(p_Lock);
__writecr8(CurrentIrql);
}
return v7;
}Referenced by:
HalReadDmaCounterV3