PnpSetDeviceInstancePropertyChangeEventFromDeviceInstance
NTSTATUS __stdcall PnpSetDeviceInstancePropertyChangeEventFromDeviceInstance(UNICODE_STRING *DeviceInstance){
int v2;
_DWORD *DeviceEventEntry;
__int64 v4;
wchar_t *Buffer;
if( PnpShutdownEvent.Header.SignalState )
return -1073741431;
v2 = DeviceInstance->Length + 82;
DeviceEventEntry = PnpCreateDeviceEventEntry((unsigned int)DeviceInstance->Length + 194);
v4 = (__int64)DeviceEventEntry;
if( !DeviceEventEntry )
return -1073741670;
*((_QWORD *)DeviceEventEntry + 3) = 0i64;
DeviceEventEntry[4] = 0;
*((GUID *)DeviceEventEntry + 7) = GUID_DEVICE_PROPERTY_CHANGED;
*((_QWORD *)DeviceEventEntry + 6) = 0i64;
*((_QWORD *)DeviceEventEntry + 7) = 0i64;
DeviceEventEntry[32] = 9;
*((_QWORD *)DeviceEventEntry + 17) = 0i64;
DeviceEventEntry[36] = 0;
DeviceEventEntry[37] = v2;
*((_QWORD *)DeviceEventEntry + 19) = 0i64;
Buffer = DeviceInstance->Buffer;
if( Buffer )
memmove((UINT8 *)DeviceEventEntry + 160, (UINT8 *)Buffer, DeviceInstance->Length);
*(_WORD *)(v4 + 2 * ((unsigned __int64)DeviceInstance->Length >> 1) + 160) = 0;
return PnpInsertEventInQueue(v4);
}Referenced by:
PiCMDeleteDevice
PiCMSetObjectProperty
PiCMSetRegistryProperty
PnpSetDeviceInstancePropertyChangeEvent