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