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