A.3.1 Using the Tape Class Driver

The system-supplied tape class driver implements device-independent, OS-specific tape support and exports support routines to the device-specific tape miniclass drivers.

The tape class driver:

·Performs a large part of miniclass driver initialization, including allocating and initializing OS resources for the miniclass driver and the devices it supports.

·Exports memory allocation and initialization routines.

·Recognizes the maximum transfer size for HBAs and splits transfer requests when necessary.

·Handles IRP_MJ_CREATE, IRP_MJ_READ, and IRP_MJ_WRITE requests.

·Handles IOCTL_TAPE_CHECK_VERIFY, IOCTL_TAPE_FIND_NEW_DEVICES, and IOCTL_TAPE_REMOVE_DEVICE requests.

·Performs driver-independent preprocessing for IRP_MJ_DEVICE_CONTROL requests and dispatches to the appropriate device-specific routines in the tape miniclass drivers.

·Communicates with other drivers in the system to deliver the CDBs to the tape devices.

·Translates between NT status codes and tape status codes, provides device-independent tape-specific error handing, and calls device-specific error handling routines.

·Allocates driver context areas for miniclass drivers (minitape extension and command extension).

The tape class driver is provided as a kernel-mode DLL.

See the Kernel-Mode Driver Reference for descriptions of the TapeClassXxx routines that can be called by a tape miniclass driver.