Disk Device Drivers: Mission Statement

Define the "information interface" for a disk Devive (Device Information Block)
Select the relevant informations that the system might want to consult about each device, like (but not restricted to) the vendor infos, the disk/partition capacity, the "real nature" of the device (floppy, hard disk, partition, virtual image (ramdisk), etc.), and - most important - the unique identifier (provided by kds "serial number" in final version).

Enumerate devices
Create a function that will scan hardware for all IDE devices and create an device information block for each of them. These d.i.b. will then be registered in kds://system.devices.disk.* as a KDS_OBJECT.

Access to devices informations
As the KDS_OBJECT framework is not yet fully defined, the only point that is relevant here is the definition of a recognizer structure for devices information blocks and its registration as the recognizer for kds://system.devices.disk? The recognizer is required to provide a "toString" function (creating the human-readable name from the DIB).

For more informations about recognizers, see struct kdsRecognizer doc.

Devices access
For some selected devices, install a server that will implement kds://services.sys.device.block interface (a read() and a write() function). Such functions are not synchronous calls (i.e. the caller should not have to wait for the driver to complete access before the method call returns), so a success and a failure callback should be provided by the caller through a yet-to-be-defined request structure.