typedef struct _PLUGPLAY_EVENT_BLOCK { GUID EventGuid; PLUGPLAY_EVENT_CATEGORY EventCategory; unsigned long *Result; unsigned long Flags; unsigned long TotalSize; void *DeviceObject; union { struct { GUID ClassGuid; wchar_t SymbolicLinkName[1]; } DeviceClass; struct { wchar_t DeviceIds[1]; } TargetDevice; struct { wchar_t DeviceId[1]; } InstallDevice; struct { void *NotificationStructure; wchar_t DeviceIds[1]; } CustomNotification; struct { void *Notification; } ProfileNotification; struct { unsigned long NotificationCode; unsigned long NotificationData; } PowerNotification; struct { PNP_VETO_TYPE VetoType; wchar_t DeviceIdVetoNameBuffer[1]; } VetoNotification; struct { GUID BlockedDriverGuid; } BlockedDriverNotification; struct { wchar_t ParentId[1]; } InvalidIDNotification; struct { GUID PowerSettingGuid; unsigned long Flags; unsigned long SessionId; unsigned long DataLength; unsigned char Data[1]; } PowerSettingNotification; struct { wchar_t DeviceId[1]; } PropertyChangeNotification; } u; } PLUGPLAY_EVENT_BLOCK, *PPLUGPLAY_EVENT_BLOCK;