筛选器驱动程序的模块状态

NDIS 筛选器驱动程序必须支持驱动程序管理的每个筛选器模块 (筛选器驱动程序) 实例的以下操作状态:

  • 分离

  • 附加

  • 已暂停

  • 重新启动

  • 运行

  • 正在暂停

下图显示了这些状态之间的关系。

显示 NDIS 筛选器驱动程序中操作之间的关系的关系图。

下面定义了筛选器模块状态:

分离
分离状态是筛选器模块的初始状态。 当筛选器模块处于此状态时,NDIS 可以调用筛选器驱动程序的 FilterAttach 函数,以将筛选器模块附加到驱动程序堆栈。 当 NDIS 调用筛选器驱动程序的 FilterAttach 函数时,筛选器模块将进入“正在附加”状态。 如果附加操作失败,筛选器模块将返回到“分离”状态。 当模块处于“已暂停”状态且 NDIS 调用 FilterDetach 函数时,模块将返回到“已分离”状态。

附加
当筛选器模块处于 “正在附加” 状态时,筛选器驱动程序准备将模块附加到驱动程序堆栈。 筛选器模块准备完成后,筛选器模块将进入“已暂停”状态。 例如,如果 (发生故障,因为所需的资源在) 不可用,筛选器模块将返回到“分离”状态。

暂停
当筛选器模块处于 “已暂停” 状态时,筛选器模块不会执行发送或接收操作。 当筛选器模块处于 “正在附加” 状态并且 FilterAttach 成功时,筛选器模块将进入“ 已暂停” 状态。 当筛选器模块处于 暂停 状态并且暂停操作完成时,筛选器模块将进入 “已暂停” 状态。 当筛选器模块处于 “已暂停” 状态并且 NDIS 调用筛选器驱动程序的 FilterRestart 函数时,筛选器模块将进入 “正在重启” 状态。 当筛选器模块处于 “已暂停” 状态并且 NDIS 调用驱动程序的 FilterDetach 处理程序时,筛选器模块将进入 “已分离 ”状态。

重新 启动
“正在重启” 状态下,筛选器驱动程序完成重启筛选器模块的发送和接收操作所需的任何操作。 当筛选器模块处于“已暂停”状态并且 NDIS 调用驱动程序的 FilterRestart 函数时,筛选器模块将进入“正在重启”状态。 如果重启失败,筛选器模块将返回到“已暂停”状态。 如果重启成功,筛选器模块将进入“正在运行”状态。

运行
“正在运行” 状态下,筛选器驱动程序对筛选器模块执行正常的发送和接收处理。 当筛选器模块处于“正在重启”状态并且驱动程序已准备好执行发送和接收操作时,筛选器模块将进入“正在运行”状态。

暂停
暂停 状态下,筛选器驱动程序完成停止筛选器模块的发送和接收操作所需的任何操作。 筛选器驱动程序必须等待其所有未完成的发送请求完成,并且 NDIS 必须返回其所有未完成的接收指示。 当筛选器模块处于“正在运行”状态并且 NDIS 调用驱动程序的 FilterPause 函数时,筛选器模块将进入“正在暂停”状态。 筛选器驱动程序无法使暂停操作失败。 暂停操作完成后,筛选器模块将进入“已暂停”状态。

驱动程序堆栈管理

NDIS 筛选器驱动程序