存储类驱动程序的调度例程

类驱动程序 DRIVER_DISPATCHDispatchClose 例程通常没有特定于设备的要求。 大多数存储类驱动程序是中间驱动程序;它们的调度例程仅返回STATUS_SUCCESS指示给定设备对象存在,以便更高级别的驱动程序和间接用户模式应用程序可以打开设备进行 I/O,并在之后关闭设备。

类驱动程序 DispatchDeviceControlDispatchInternalDeviceControl 例程必须是常驻例程;也就是说,它们不能是可分页的,也不能是驱动程序的可分页图像部分的一部分。 根据给定请求的 IOCTL,此类调度例程可能会调用分页例程或等待来自同步或通知对象的调用 (从而阻止执行线程) ,但调度例程必须能够在DISPATCH_LEVEL传递未知的 IOCTL。

存储类驱动程序必须具有 DispatchPnP 例程,以便请求启动、停止和删除设备并响应其他 PnP 请求,例如设备位于分页路径上的通知。 有关处理 PnP 启动请求的详细信息,请参阅 处理存储类驱动程序中的 PnP 启动。 有关处理其他 PnP 请求的详细信息,请参阅 处理对存储外围设备的 PnP 请求

存储类驱动程序还必须具有 DispatchPower 例程,以便请求设置其设备的电源状态。 有关详细信息,请参阅 处理对存储外围设备的电源请求

如果存储类驱动程序的设备在内部缓存数据,如果其设备可能连接到由内部缓存数据的 HBA 驱动的总线,或者如果文件系统分层在类驱动程序之上,则存储类驱动程序必须具有 DispatchShutdown 例程和 DispatchFlushBuffers 例程。 为了保持数据完整性,应在系统关闭之前将此类缓存刷新到设备。

有关 调度例程的 一般要求的详细信息,另请参阅编写调度例程。