_PLUGPLAY_EVENT_BLOCK

//0x50 bytes (sizeof) struct _PLUGPLAY_EVENT_BLOCK { struct _GUID EventGuid; //0x0 enum _PLUGPLAY_EVENT_CATEGORY EventCategory; //0x10 ULONG* Result; //0x18 ULONG Flags; //0x20 ULONG TotalSize; //0x24 VOID* DeviceObject; //0x28 union { struct { struct _GUID ClassGuid; //0x30 WCHAR SymbolicLinkName[1]; //0x40 } DeviceClass; //0x30 struct { WCHAR DeviceId[1]; //0x30 } TargetDevice; //0x30 struct { WCHAR DeviceId[1]; //0x30 } InstallDevice; //0x30 struct { VOID* NotificationStructure; //0x30 WCHAR DeviceId[1]; //0x38 } CustomNotification; //0x30 struct { VOID* Notification; //0x30 } ProfileNotification; //0x30 struct { ULONG NotificationCode; //0x30 ULONG NotificationData; //0x34 } PowerNotification; //0x30 struct { enum _PNP_VETO_TYPE VetoType; //0x30 WCHAR DeviceIdVetoNameBuffer[1]; //0x34 } VetoNotification; //0x30 struct { struct _GUID BlockedDriverGuid; //0x30 } BlockedDriverNotification; //0x30 struct { WCHAR ParentId[1]; //0x30 } InvalidIDNotification; //0x30 struct { struct _GUID PowerSettingGuid; //0x30 ULONG Flags; //0x40 ULONG SessionId; //0x44 ULONG DataLength; //0x48 UCHAR Data[1]; //0x4c } PowerSettingNotification; //0x30 struct { WCHAR DeviceId[1]; //0x30 } PropertyChangeNotification; //0x30 struct { WCHAR DeviceId[1]; //0x30 } DeviceInstanceNotification; //0x30 } u; //0x30 };