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.