VfFreeCommonBuffer

VOID __stdcall VfFreeCommonBuffer(
        DMA_ADAPTER *DmaAdapter,
        UINT64 Length,
        LARGE_INTEGER LogicalAddress,
        VOID *VirtualAddress,
        UINT8 CacheEnabled){
  unsigned int v5; 
  void(__fastcall *v9)(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;
  LODWORD(v9) = ViGetRealDmaOperation(DmaAdapter, 0x18ui64);
  LOBYTE(v10) = 1;
  v11 = v9;
  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.