为 I/O 操作设备编程
使用以下常规准则来设计、编写和调用 SynchCritSection 例程,这些例程对设备进行 I/O 操作编程:
对设备进行 I/O 操作的 SynchCritSection 例程必须尽快返回控制权。
出于此原因, SynchCritSection 例程应仅执行为 I/O 设置设备所需的操作。 因此,驱动程序应在调用 SynchCritSection 例程之前执行所有 IRP 预处理、初始化其他驱动程序例程的状态信息以及获取硬件资源。
设备驱动程序可以有多个 SynchCritSection 例程来对设备进行编程。
例如,为其设置读取请求的设备驱动程序与设置某些设备控制请求明显不同,可能具有单独的 SynchCritSection 例程,以便针对每种类型的请求对其设备进行编程。
每个 SynchCritSection 例程必须尽快返回控制权,因为运行任何 SynchCritSection 例程会阻止驱动程序的 ISR 执行。
不应使用 switch 语句或许多嵌套 if 编写单个大型常规用途 SynchCritSection 例程。然后。。用于确定将执行哪些操作或要更新的状态信息的 else 语句。 另一方面,应避免编写大量仅对单个设备寄存器进行编程的 SynchCritSection 例程。