I used broadcast to send messages to client from kext.
kev_msg:
struct kev_msg msg = {0};
msg.vendor_code = vendor_code;
msg.kev_class = KEV_NETWORK_CLASS;
msg.kev_subclass = KEV_IOKIT_CLASS;
kev_request:
struct kev_request kevRequest = {0};
kevRequest.vendor_code = vendor_code;
kevRequest.kev_class = KEV_ANY_CLASS;
kevRequest.kev_subclass = KEV_SYSTEM_CLASS;
Client can receive messages if you set it as above.
Is subclass ignored?
The more I want to know about the matching details of class and subclass.