The messaging system replaces the reliance on service-calls to propagate most of the change information around the system.
A driver may send messages using USB_MsgSend (SWI&55398), this is available to any driver. A module driver may also choose to register a message handler with the USB core to receive messages.
All messages have a class (Table D.1, “Message Classes”), which indicates what data the message contains and the data payload. The handlers can indicate which types of message they are interested in, so that they are not called for irrelevant information.
Current message classes are listed in Appendix D, USB Messaging System Messages. Drivers should be prepared to silently ignore all messages they do not understand, as the class codes may be extended at a later date.