VfFreeCommonBuffer

VOID __stdcall VfFreeCommonBuffer(
        _DMA_ADAPTER *DmaAdapter,
        UINT64 Length,
        _LARGE_INTEGER LogicalAddress,
        VOID *VirtualAddress,
        UINT8 CacheEnabled){
  unsigned int v5; 
  void(__fastcall *RealDmaOperation)(_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;
  RealDmaOperation = (void(__fastcall *)(_DMA_ADAPTER *, _QWORD, _LARGE_INTEGER, VOID *, char))ViGetRealDmaOperation(
                                                                                                  (ULONG_PTR)DmaAdapter,
                                                                                                  0x18ui64);
  LOBYTE(v10) = 1;
  v11 = RealDmaOperation;
  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.