处理 IRP 时出现其他错误

以下是驱动程序在处理 IRP 时有时会发生的其他错误。

丢失或双完成的 IRP

这些问题以及缺少对 IoStartNextPacket 等 I/O 管理器例程的调用,通常发生在错误处理路径中。 快速查看驱动程序路径可以找到此类问题。

聚合公共 IOCTL 和专用 IOCTL 路径

一般规则是,驱动程序应包含公共和专用 IOCTL 的单独执行路径, (或 FSCTL) 。 驱动程序无法通过查看控制代码来确定 IOCTL 或 FSCTL 请求是源自内核模式还是用户模式。 因此,处理同一执行路径中的公共和专用代码 (或执行最小验证,然后调用相同的例程) 可能会使驱动程序出现安全漏洞。 如果专用 IOCTL 或 FSCTL 具有特权,则知道控制代码的无特权用户可能能够访问它。 因此,如果驱动程序支持专用 IOCTL 或 FSCTL 请求,请确保它独立于它必须支持的任何公共 IOCTL 或 FSCL 来处理此类请求。