PipSetDevNodeUserFlags
VOID __stdcall PipSetDevNodeUserFlags(_DEVICE_NODE *DeviceNode, UINT64 Flags){
unsigned int UserFlags;
wchar_t *Buffer;
INT64 v5;
INT64 v6;
UserFlags = DeviceNode->UserFlags;
DeviceNode->UserFlags = Flags | UserFlags;
if( (((unsigned __int16)UserFlags ^ (unsigned __int16)(Flags | UserFlags)) & 0x347) != 0 )
{
Buffer = DeviceNode->InstancePath.Buffer;
if( Buffer )
{
PnpRaiseNtPlugPlayDevicePropertyChangeEvent((INT64)DeviceNode, Buffer, 11);
v5 = DeviceNode->UserFlags;
if( (((unsigned __int8)UserFlags ^ LOBYTE(DeviceNode->UserFlags)) & 0x40) != 0 )
{
PnpRaiseNtPlugPlayDevicePropertyChangeEvent(v5, DeviceNode->InstancePath.Buffer, 29);
LODWORD(v5) = DeviceNode->UserFlags;
}
v6 = UserFlags ^ (unsigned int)v5;
if( (v6 & 4) != 0 )
PnpRaiseNtPlugPlayDevicePropertyChangeEvent(v6, DeviceNode->InstancePath.Buffer, 30);
}
}
}Referenced by:
IopInitializePlugPlayServices
PiDevCfgProcessDevice
PiProcessNewDeviceNode
PiProcessQueryDeviceState
PiProcessSetDeviceProblem
PnpQueryRemoveLockedDeviceNode
PnpShutdownDevices
PnpTrackQueryRemoveDevices