VfAllocateDomainCommonBuffer
INT64 __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;
int v14;
__int64(__fastcall *v15)(DMA_ADAPTER *, VOID *, LARGE_INTEGER *, _QWORD, _DWORD, MEMORY_CACHING_TYPE *, _DWORD, LARGE_INTEGER *, VOID **);
UINT64 v16;
v12 = Length;
PoolWithTag = (LARGE_INTEGER *)ExAllocatePoolWithTag(NonPagedPoolNx, 0x18ui64, 0x566C6148ui64);
if( PoolWithTag )
{
LODWORD(v15) = ViGetRealDmaOperation(DmaAdapter, 0xE8ui64);
v14 = v15(
DmaAdapter,
DomainHandle,
MaximumAddress,
v12,
Flags,
CacheType,
PreferredNode,
LogicalAddress,
VirtualAddress);
if( v14 < 0 )
{
ExFreePoolWithTag(PoolWithTag, 0);
}
else
{
PoolWithTag[2] = *LogicalAddress;
ViHalTrackDomainCommonBuffer((__int64 *)PoolWithTag, v16);
}
}
else
{
return(unsigned int)-1073741670;
}
return(unsigned int)v14;
}Referenced by:
No references.