DRIVER CLASSES
Besides implementing the stream interface, a driver may implement a specific set of IOCTLs. In reality, most functionality is implemented by this “backdoor” because it enables far greater flexibility than the read-and-write driver functions. For example, drivers that implement power management implement a standard set of IOCTLs. Drivers that implement serial devices also implement a standard set of IOCTLs.
Many drivers implement an alternative interface by implementing a specific set of IOCTLs. Compact 7 formalizes this by specifying a number of predefined interfaces, as shown in Table 32-4. Devices that implement the IOCTLs for an interface belong to the associated class. This can be indicated by adding a class GUID entry into a driver’s registry settings as a subkey IClass, or the Device Manager function AdvertiseInterface can be used. Custom interfaces classes can also be defined. If a driver implements the interface for a driver class though, then it must fully implement the functionality because system components that use it assume that the functions are fully executed.
TABLE 32-4: Compact 7 Interface Classes
| INTERFACE |
| BATTERY_DRIVER_CLASS |
| BLOCK_DRIVER_GUID |
| CDDA_MOUNT_GUID |
| CDFS_MOUNT_GUID |
| DEVCLASS_CARDSERV_GUID |
| DEVCLASS_DISPLAY_GUID |
| DEVCLASS_KEYBOARD_GUID |
| DEVCLASS_STREAM_GUID |
| FATFS_MOUNT_GUID |
| FSD_MOUNT_GUID |
| NLED_DRIVER_CLASS |
| PMCLASS_BLOCK_DEVICE |
| PMCLASS_DISPLAY |
| PMCLASS_GENERIC_DEVICE |
| PMCLASS_NDIS_MINIPORT |
| STORE_MOUNT_GUID ... |
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access