HalpGetCacheCoherency
CHAR __stdcall HalpGetCacheCoherency(INT64 a1, _DEVICE_OBJECT *a2, _BYTE *a3){
INT8 v4;
__int64 v6;
CHAR result;
__int128 v8;
__int128 v9;
__int64 v10;
v4 = 0;
*a3 = 0;
v8 = 0i64;
v9 = 0i64;
v10 = 0i64;
if( a1 )
{
result = *(_BYTE *)(a1 + 72);
*a3 = result;
}
else if( a2
&& IoQueryInterface((INT64)a2, 1, (INT64)&GUID_DMA_CACHE_COHERENCY_INTERFACE, 0x28u, 1, 0i64, (INT64)&v8) >= 0 )
{
v6 = *((_QWORD *)&v8 + 1);
*a3 = v10;
return(*((__int64(__fastcall **)(__int64))&v9 + 1))(v6);
}
else
{
*a3 = 1;
KeSystemFullyCacheCoherent((_KDPC *)a1, v4);
if( !result )
*a3 = 0;
}
return result;
}Referenced by:
HalGetAdapterV2
HalGetAdapterV3