PiUEventNotifyDeviceInterfaceChange
INT64 __fastcall PiUEventNotifyDeviceInterfaceChange(INT64 a1){
unsigned int v1;
__int64 v2;
__int64 *v4;
unsigned int v5;
_QWORD **v6;
_QWORD *v7;
INT64 v8;
__int64 v9;
__int64 v11;
__int64 v12[7];
v1 = 0;
v2 = *(_QWORD *)(a1 + 72) - *(_QWORD *)&GUID_DEVICE_INTERFACE_ARRIVAL.Data1;
if( !v2 )
v2 = *(_QWORD *)(a1 + 80) - *(_QWORD *)GUID_DEVICE_INTERFACE_ARRIVAL.Data4;
if( !v2 )
goto LABEL_4;
v11 = *(_QWORD *)(a1 + 72) - *(_QWORD *)&GUID_DEVICE_INTERFACE_REMOVAL.Data1;
if( !v11 )
v11 = *(_QWORD *)(a1 + 80) - *(_QWORD *)GUID_DEVICE_INTERFACE_REMOVAL.Data4;
if( !v11 )
{
LABEL_4:
ExAcquireFastMutex(&PiUEventClientRegistrationListLock);
v4 = v12;
v12[1] = (__int64)qword_140C44CF0;
v5 = 0;
v12[0] = (__int64)&PiUEventDevInterfaceClientList[2 * (unsigned int)PiUEventHashGuidIntoBucket((_GUID *)(a1 + 120))];
do
{
v6 = (_QWORD **)*v4;
v7 = *(_QWORD **)*v4;
while( v7 != v6 )
{
v8 = (INT64)v7;
v7 = (_QWORD *)*v7;
if( !v5 )
{
v9 = *(_QWORD *)(a1 + 120) - *(_QWORD *)(v8 + 24);
if( !v9 )
v9 = *(_QWORD *)(a1 + 128) - *(_QWORD *)(v8 + 32);
if( v9 )
continue;
}
if( PiUEventApplyAdditionalFilters(a1, v8) )
v1 = PiUEventNotifyClient(a1, v8);
}
++v5;
++v4;
}
while( v5 < 2 );
KeReleaseGuardedMutex(&PiUEventClientRegistrationListLock);
}
return v1;
}Referenced by:
No references.