VfAllocateCommonBufferEx
VOID *__stdcall VfAllocateCommonBufferEx(
ULONG_PTR DmaAdapter,
_LARGE_INTEGER *Length,
UINT64 LogicalAddress,
_LARGE_INTEGER *CacheEnabled,
UINT8 PreferredNode,
UINT64 PreferredNodea){
ULONG_PTR v7;
_DMA_ADAPTER *v9;
VOID *RealDmaOperation;
INT64 v11;
__int64(__fastcall *v12)(_DMA_ADAPTER *, _LARGE_INTEGER *, _QWORD, _LARGE_INTEGER *, int, _DWORD);
_LIST_ENTRY *AdapterInformationInternal;
VOID *result;
int v15;
UINT64 v16;
v7 = LogicalAddress;
v9 = *(_DMA_ADAPTER **)&DmaAdapter;
RealDmaOperation = ViGetRealDmaOperation(DmaAdapter, 0x98ui64);
LOBYTE(v11) = 1;
v12 = (__int64(__fastcall *)(_DMA_ADAPTER *, _LARGE_INTEGER *, _QWORD, _LARGE_INTEGER *, int, _DWORD))RealDmaOperation;
AdapterInformationInternal = ViGetAdapterInformationInternal(v9, v11);
if( (MmVerifierData & 0x4000000) != 0 && Length && Length->QuadPart < 0x100000000ui64 )
VerifierBugCheckIfAppropriate(0xC4ui64, 0x141u, Length->QuadPart, v7, 0, v16);
LOBYTE(v15) = PreferredNode;
result = (VOID *)v12(v9, Length, v7, CacheEnabled, v15, PreferredNodea);
if( result )
{
if( AdapterInformationInternal )
_InterlockedIncrement((volatile signed __int32 *)&AdapterInformationInternal[10].Blink + 1);
}
return result;
}Referenced by:
No references.