General Storage I/O Control Codes
Storage devices of different kinds often require the same services. Rather than duplicate the IOCTL requests that provide these services for each device type, this section defines a set of standard services and accompanying device control codes that are frequently required by storage devices. The I/O control codes defined here have the form IOCTL_STORAGE_XXX and they replace the IOCTL_DeviceType_XXX control codes, where DeviceType was DISK, TAPE, or CDROM. For example, IOCTL_STORAGE_RESERVE replaces IOCTL_DISK_RESERVE, IOCTL_TAPE_RESERVE, and IOCTL_CDROM_RESERVE. The IOCTL_STORAGE_XXX control codes have identical values for function code, transfer method, and required access as the previous disk, tape, and CD-ROM codes. The only difference is the device type.
The storage class driver initiates some of these requests, but usually it is an application that does so. Storage class drivers must handle some or all of these requests, depending on the type of storage device. Where no storage class driver exists, the application might make the request directly to the port driver.