VfAllocateDomainCommonBuffer
NTSTATUS __stdcall VfAllocateDomainCommonBuffer(
_DMA_ADAPTER *DmaAdapter,
VOID *DomainHandle,
_LARGE_INTEGER *MaximumAddress,
UINT64 Length,
UINT64 Flags,
_MEMORY_CACHING_TYPE *CacheType,
UINT64 PreferredNode,
_LARGE_INTEGER *LogicalAddress,
VOID **VirtualAddress){
unsigned int v12;
_LARGE_INTEGER *PoolWithTag;
NTSTATUS v14;
VOID *RealDmaOperation;
v12 = Length;
PoolWithTag = (_LARGE_INTEGER *)ExAllocatePoolWithTag(0x200ui64, 0x18ui64, 1449943368i64);
if( !PoolWithTag )
return -1073741670;
RealDmaOperation = ViGetRealDmaOperation((ULONG_PTR)DmaAdapter, 0xE8ui64);
v14 = ((__int64(__fastcall *)(_DMA_ADAPTER *, VOID *, _LARGE_INTEGER *, _QWORD, _DWORD, _MEMORY_CACHING_TYPE *, _DWORD, _LARGE_INTEGER *, VOID **))RealDmaOperation)(
DmaAdapter,
DomainHandle,
MaximumAddress,
v12,
Flags,
CacheType,
PreferredNode,
LogicalAddress,
VirtualAddress);
if( v14 < 0 )
{
ExFreePoolWithTag(PoolWithTag, 0);
}
else
{
PoolWithTag[2] = *LogicalAddress;
ViHalTrackDomainCommonBuffer((__int64 *)PoolWithTag);
}
return v14;
}Referenced by:
No references.