PipSetDevNodeState
VOID __stdcall PipSetDevNodeState(_DEVICE_NODE *DeviceNode, _PNP_DEVNODE_STATE State, _PNP_DEVNODE_STATE *OldState){
BOOL v5;
int v6;
char v7;
unsigned int v8;
unsigned __int8 v9;
unsigned __int64 v10;
int IsDevNodeDNStarted;
__int64 v12;
int v13;
__int64 v14;
__int64 v15;
__int64 v16;
v5 = 0;
v6 = 0;
v7 = 0;
KeAcquireSpinLockRaiseToDpc(&PnpSpinLock, *(UINT64 *)&State);
v8 = *((_DWORD *)DeviceNode + 75);
v10 = v9;
if( v8 != State )
{
v5 = PipAreDriversLoadedWorker(v8, *((unsigned int *)DeviceNode + 76));
IsDevNodeDNStarted = PipIsDevNodeDNStarted(DeviceNode);
v12 = *((unsigned int *)DeviceNode + 97);
v6 = IsDevNodeDNStarted;
*((_DWORD *)DeviceNode + 76) = v13;
*((_DWORD *)DeviceNode + 75) = State;
v7 = 1;
*((_DWORD *)DeviceNode + v12 + 77) = v13;
*((_DWORD *)DeviceNode + 97) = (*((_DWORD *)DeviceNode + 97) + 1) % 0x14u;
}
KxReleaseSpinLock(&PnpSpinLock);
__writecr8(v10);
if( v7
&& *((_QWORD *)DeviceNode + 6)
&& (PipAreDriversLoadedWorker(*((unsigned int *)DeviceNode + 75), *((unsigned int *)DeviceNode + 76)) != v5
|| (unsigned int)PipIsDevNodeDNStarted(DeviceNode) != v6) )
{
PnpRaiseNtPlugPlayDevicePropertyChangeEvent(v14, v15, 11);
if( (unsigned int)PipIsDevNodeDNStarted(DeviceNode) != v6 )
PnpRaiseNtPlugPlayDevicePropertyChangeEvent(v16, *((_QWORD *)DeviceNode + 6), 26);
}
if( State == DeviceNodeDeleted )
PnpRemoveDeviceActionRequests(*((DEVICE_OBJECT **)DeviceNode + 4));
}Referenced by:
IoReportDetectedDevice
IopInitializeDeviceInstanceKey
IopInitializePlugPlayServices
IopLegacyResourceAllocation
PiInitializeDevice
PiProcessNewDeviceNode
PipCallDriverAddDevice
PipCallDriverAddDeviceQueryRoutine
PipEnumerateCompleted
PipEnumerateDevice
PipProcessRestartPhase2
PipProcessStartPhase2
PipProcessStartPhase3
PnpDeviceCompletionProcessCompletedRequest
PnpDriverLoadingFailed
PnpProcessAssignResources
PnpQueryRemoveLockedDeviceNode
PnpQueryStopDeviceNode
PnpRemoveLockedDeviceNode
PnpRequestDeviceRemovalWorker
PnpRestartDeviceNode
PnpStartDeviceNode
PnpStopDeviceSubtree
PnpSurpriseRemoveLockedDeviceNode