VfFreeAdapterChannel
VOID __stdcall VfFreeAdapterChannel(DMA_ADAPTER *DmaAdapter){
void(__fastcall *v2)(DMA_ADAPTER *);
INT64 v3;
void(__fastcall *v4)(DMA_ADAPTER *);
LIST_ENTRY *AdapterInformationInternal;
INT64 v6;
struct _SLIST_ENTRY *v7;
VF_ASSERT_IRQL(2u);
LODWORD(v2) = ViGetRealDmaOperation(DmaAdapter, 0x30ui64);
LOBYTE(v3) = 1;
v4 = v2;
AdapterInformationInternal = ViGetAdapterInformationInternal(DmaAdapter, v3);
v4(DmaAdapter);
if( AdapterInformationInternal )
{
_InterlockedExchange((volatile __int32 *)&AdapterInformationInternal[11].Blink + 1, 0);
v6 = ViRemoveChannelWcb((INT64)AdapterInformationInternal, 0i64, 0i64);
if( v6 )
{
DECREMENT_ADAPTER_CHANNELS((__int64)AdapterInformationInternal);
SUBTRACT_MAP_REGISTERS((INT64)AdapterInformationInternal, *(unsigned int *)(v6 + 48));
v7 = *(struct _SLIST_ENTRY **)(v6 + 96);
if( v7 )
ViFreeMapRegisterFile((__int64)AdapterInformationInternal, v7);
ExFreeToNPagedLookasideList((NPAGED_LOOKASIDE_LIST *)ViHalWaitBlockLookaside, (PVOID)v6);
}
}
}Referenced by:
No references.