类驱动程序 DRIVER_DISPATCH 和 DispatchClose 例程通常没有特定于设备的要求。 大多数存储类驱动程序都是中间驱动程序;其调度例程只返回STATUS_SUCCESS以指示给定的设备对象存在,以便更高级别的驱动程序和间接的用户模式应用程序可以打开设备进行 I/O,然后关闭设备。
类驱动程序 DispatchDeviceControl 和 DispatchInternalDeviceControl 例程必须驻留;也就是说,它们不能分页,也不能是驱动程序可分页图像部分的一部分。 根据给定请求的 IOCTL,此类调度例程可能会调用分页例程或等待同步或通知对象的调用(从而阻塞正在执行的线程),但调度例程必须能够在 DISPATCH_LEVEL 传递未知的 IOCTL 命令。
存储类驱动程序必须具有 DispatchPnP 例程,以便请求启动、停止和删除设备并响应其他 PnP 请求,例如通知设备位于分页路径上。 有关处理 PnP 启动请求的详细信息,请参阅 在存储类驱动程序中处理 PnP 启动。 有关处理其他 PnP 请求的详细信息,请参阅 处理对存储外围设备的 PnP 请求。
存储类驱动程序还必须具有 DispatchPower 例程,以便请求设置其设备的电源状态。 有关详细信息,请参阅 处理对存储外围设备的电源请求。
存储类驱动程序必须具有 DispatchShutdown 例程,并且如果其设备在内部缓存数据,或者其设备可能附加到由内部缓存数据的 HBA 驱动的总线,或者文件系统在类驱动程序之上分层,则可能需要 DispatchFlushBuffers 例程。 为了保持数据完整性,应在关闭系统之前将此类缓存刷新到设备。
另请参阅 编写调度例程 ,详细了解调度例程的常规要求。