NDIS 筛选器驱动程序必须支持驱动程序管理的每个筛选器模块(筛选器驱动程序实例)的以下作状态:
已分离
正在附加
已暂停
重新 启动
跑步
正在暂停
下图显示了这些状态之间的关系。
下面定义了筛选器模块状态:
分离
分离状态是筛选器模块的初始状态。 当筛选器模块处于此状态时,NDIS 可以调用筛选器驱动程序的 FilterAttach 函数,将筛选器模块附加到驱动程序堆栈。 当 NDIS 调用筛选器驱动程序的 FilterAttach 函数时,筛选器模块将进入附加状态。 如果附加作失败,筛选器模块将返回到分离状态。 当模块处于暂停状态并且 NDIS 调用 FilterDetach 函数时,该模块将返回到分离状态。
正在附加
当筛选器模块处于 附加 状态时,筛选器驱动程序准备将模块附加到驱动程序堆栈。 筛选器模块准备完成后,筛选器模块将进入暂停状态。 如果发生故障(例如,由于所需的资源不可用),筛选器模块将返回到分离状态。
已暂停
当筛选器模块处于 暂停 状态时,筛选器模块不会执行发送或接收作。 当筛选器模块处于 附加 状态并且 FilterAttach 成功时,筛选器模块将进入 暂停 状态。 当筛选器模块处于 暂停 状态并且暂停作完成时,筛选器模块将进入 暂停 状态。 当筛选器模块处于 暂停 状态并且 NDIS 调用筛选器驱动程序的 FilterRestart 函数时,筛选器模块将进入 重启 状态。 当筛选器模块处于 暂停 状态并且 NDIS 调用驱动程序的 FilterDetach 处理程序时,筛选器模块将进入 分离 状态。
重新 启动
在“重启”状态下,筛选器驱动程序完成重启筛选器模块所需的发送和接收操作。 当筛选器模块处于暂停状态并且 NDIS 调用驱动程序的 FilterRestart 函数时,筛选器模块将进入重启状态。 如果重启失败,筛选器模块将返回到暂停状态。 如果重启成功,筛选器模块将进入“正在运行”状态。
运行
在 “正在运行” 状态下,筛选器驱动程序对筛选器模块执行正常发送和接收处理。 当筛选器模块处于重启状态并且驱动程序已准备好执行发送和接收作时,筛选器模块将进入“正在运行”状态。
暂停
在 暂停 状态下,筛选器驱动程序完成停止筛选模块的发送和接收所需的任何操作。 筛选器驱动程序必须等待其所有未完成的发送请求完成,并让 NDIS 返回其所有未完成的接收指示。 当筛选器模块处于“正在运行”状态,NDIS 调用驱动程序的 FilterPause 函数时,筛选器模块将进入暂停状态。 筛选器驱动程序不能失败暂停操作。 暂停作完成后,筛选器模块将进入暂停状态。