The _DEV_BROADCAST_USERDEFINED structure contains the user-defined message and optional data associated with the DBT_USERDEFINED device message.
struct _DEV_BROADCAST_USERDEFINED {
struct _DEV_BROADCAST_HDR dbud_dbh;
char dbud_szName[1]; // ASCIIZ name
// BYTE dbud_rgbUserDefined[]; // Optional user-defined contents
};
"WidgetWare\QueryScannerShutdown"
or
"WidgetWare\Video Q39S\AdapterReady"
Because this structure contains variable length fields, use this structure tag as a template for creating a pointer to a user-defined structure. Note that the structure must not contain pointers. For example:
#define NAME_LENGTH 32 #define USER_LENGTH 50 typedef struct tagWIDGET_WARE_DEV_BROADCAST_USERDEFINED
{
struct _DEV_BROADCAST_HDR DBHeader;
char szName[NAME_LENGTH]
BYTE UserDefined[USER_LENGTH]; } WIDGET_WARE_DEV_BROADCAST_USERDEFINED;