VfFreeCommonBuffer
VOID __stdcall VfFreeCommonBuffer(
_DMA_ADAPTER *DmaAdapter,
UINT64 Length,
_LARGE_INTEGER LogicalAddress,
VOID *VirtualAddress,
UINT8 CacheEnabled){
unsigned int v5;
void(__fastcall *RealDmaOperation)(_DMA_ADAPTER *, _QWORD, _LARGE_INTEGER, VOID *, char);
INT64 v10;
void(__fastcall *v11)(_DMA_ADAPTER *, _QWORD, _LARGE_INTEGER, VOID *, char);
_LIST_ENTRY *AdapterInformationInternal;
UINT8 v13;
UINT8 v14;
char v15;
UINT8 v16;
_LARGE_INTEGER LogicalAddressa;
LogicalAddressa = LogicalAddress;
v5 = Length;
RealDmaOperation = (void(__fastcall *)(_DMA_ADAPTER *, _QWORD, _LARGE_INTEGER, VOID *, char))ViGetRealDmaOperation(
(ULONG_PTR)DmaAdapter,
0x18ui64);
LOBYTE(v10) = 1;
v11 = RealDmaOperation;
AdapterInformationInternal = ViGetAdapterInformationInternal(DmaAdapter, v10);
v13 = ViHalFreeDomainCommonBuffer(&LogicalAddressa);
v15 = CacheEnabled;
v16 = v13;
if( !AdapterInformationInternal
|| v13
|| (VF_ASSERT_MAX_IRQL(v14),
!(unsigned int)ViSpecialFreeCommonBuffer(
(void(__fastcall *)(_QWORD, _QWORD, _QWORD, _QWORD, char))v11,
AdapterInformationInternal,
VirtualAddress,
v15)) )
{
((void(__fastcall *)(_QWORD, _QWORD, _QWORD, _QWORD, _BYTE))v11)(
DmaAdapter,
v5,
(_LARGE_INTEGER)LogicalAddress.QuadPart,
VirtualAddress,
v15);
if( AdapterInformationInternal )
{
if( !v16 )
DECREMENT_COMMON_BUFFERS((__int64)AdapterInformationInternal);
}
}
}Referenced by:
No references.