ViGetAdapterInformationInternal

_LIST_ENTRY *__stdcall ViGetAdapterInformationInternal(_DMA_ADAPTER *DmaAdapter, INT64 VerifyActive){
  char v2; 
  unsigned __int8 v4; 
  UINT64 Param3; 
  unsigned __int64 v6; 
  UINT64 v8; 

  v2 = VerifyActive;
  if( !DmaAdapter )
    return 0i64;
  if( KeGetCurrentIrql() > 2u )
  {
    if( ViVerifyDma )
      VF_ASSERT_MAX_IRQL((UINT8)DmaAdapter);
    return 0i64;
  }
  if( !ViVerifyDma && ViEnableAfterHibernate == 1 )
    return 0i64;
  v4 = KeAcquireSpinLockRaiseToDpc(&qword_140D49088);
  Param3 = ViAdapterList;
  v6 = v4;
  while( 1 )
  {
    if( &ViAdapterList == (UINT64 *)Param3 )
    {
      KxReleaseSpinLock(&qword_140D49088);
      __writecr8(v6);
      return 0i64;
    }
    if( DmaAdapter == *(_DMA_ADAPTER **)(Param3 + 16) )
      break;
    Param3 = *(_QWORD *)Param3;
  }
  KxReleaseSpinLock(&qword_140D49088);
  __writecr8(v6);
  if( v2 && *(int *)(Param3 + 36) <= 0 )
  {
    ViHalPreprocessOptions(
      &qword_140C12D34,
      (PSTR)"Driver has attempted to access an adapter(%p) that has already been released",
      0x18ui64,
      (UINT64)DmaAdapter,
      Param3,
      0i64,
      v8);
    VfReportIssueWithOptions(0xE6ui64, 0x18u, (ULONG_PTR)DmaAdapter, Param3, 0, &qword_140C12D34);
  }
  return(_LIST_ENTRY *)Param3;
}

Referenced by:

VfAllocateAdapterChannel
VfAllocateAdapterChannelEx
VfAllocateCommonBufferEx
VfAllocateCommonBufferWithBounds
VfAllocateCrashDumpRegisters
VfBuildMdlFromScatterGatherList
VfBuildScatterGatherList
VfBuildScatterGatherListEx
VfCancelAdapterChannel
VfFlushAdapterBuffers
VfFlushAdapterBuffersEx
VfFreeAdapterChannel
VfFreeAdapterObject
VfFreeCommonBuffer
VfFreeMapRegisters
VfGetScatterGatherList
VfGetScatterGatherListEx
VfHalAllocateMapRegisters
VfMapTransfer
VfMapTransferEx
VfPutScatterGatherList
ViGetRealDmaOperation
ViHookDmaAdapter