HalpDmaQueueAdapter
__int64 __fastcall HalpDmaQueueAdapter(__int64 a1){
__int64 v1;
_QWORD *v3;
__int64 v4;
_QWORD *v5;
__int64 result;
struct _KLOCK_QUEUE_HANDLE LockHandle;
v1 = *(_QWORD *)(a1 + 152);
memset(&LockHandle, 0, sizeof(LockHandle));
KeAcquireInStackQueuedSpinLock((UINT64 *)(v1 + 120), &LockHandle);
v3 = (_QWORD *)(a1 + 160);
if( *(_BYTE *)(a1 + 434) )
v4 = v1 + 168;
else
v4 = v1 + 152;
v5 = *(_QWORD **)(v4 + 8);
if( *v5 != v4 )
__fastfail(3u);
*v3 = v4;
*(_QWORD *)(a1 + 168) = v5;
*v5 = v3;
*(_QWORD *)(v4 + 8) = v3;
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
result = (unsigned int)KiIrqlFlags;
__writecr8(LockHandle.OldIrql);
return result;
}Referenced by:
HalAllocateAdapterChannelV2
HalpAllocateDmaResourcesInternal
HalpDmaProcessMapRegisterQueueV2
IoFreeAdapterChannelV2