PpProfileQueryHardwareProfileChange
NTSTATUS __stdcall PpProfileQueryHardwareProfileChange(
UINT8 SubsumingExistingDeparture,
PROFILE_NOTIFICATION_TIME InPnpEvent,
PNP_VETO_TYPE *VetoType,
_UNICODE_STRING *VetoName){
_DWORD *v8;
char v9;
bool v10;
NTSTATUS result;
ExAcquireFastMutex((PFAST_MUTEX)((char *)&PnpReplaceEvent + 160));
v8 = (_DWORD *)*(&PnpReplaceEvent + 28);
v9 = 0;
while( v8 != (_DWORD *)((char *)&PnpReplaceEvent + 224) )
{
v10 = *(v8 - 2) == 2;
v8 = *(_DWORD **)v8;
if( v10 )
v9 = 1;
}
KeReleaseGuardedMutex((PKGUARDED_MUTEX)((char *)&PnpReplaceEvent + 160));
if( SubsumingExistingDeparture )
return 0;
if( v9 )
{
*(&PnpReplaceEvent + 288) = 0;
return 0;
}
result = PnpRequestHwProfileChangeNotification(&GUID_HWPROFILE_QUERY_CHANGE, InPnpEvent, VetoType, VetoName);
*(&PnpReplaceEvent + 288) = result >= 0;
return result;
}Referenced by:
PipProcessStartPhase1
PnpProcessQueryRemoveAndEject