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