筛选器模块状态和操作

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

分离
分离状态是筛选器模块的初始状态。 当筛选器模块处于此状态时,NDIS 可以调用筛选器驱动程序的 FilterAttach 函数,以将筛选器模块附加到驱动程序堆栈。

附加
“正在附加 ”状态下,筛选器驱动程序准备将筛选器模块附加到驱动程序堆栈。

暂停
“已暂停” 状态下,筛选器驱动程序不执行发送或接收操作。

重新 启动
“正在重启” 状态下,筛选器驱动程序完成重启筛选器模块的发送和接收操作所需的任何操作。

运行
“正在运行” 状态下,筛选器驱动程序对筛选器模块执行正常的发送和接收处理。

暂停
暂停 状态下,筛选器驱动程序完成停止筛选器模块的发送和接收操作所需的任何操作。

在下表中,标题是筛选器模块状态。 主要事件列在第一列中。 表中的其余条目指定在状态中发生事件后筛选器模块进入的下一个状态。 空条目表示无效的事件/状态组合。

事件/状态 分离 附加 已暂停 重新启动 运行 正在暂停

筛选器附加

附加

附加已完成

已暂停

筛选器分离

分离

筛选器重启

重新启动

重启已完成

运行

筛选器暂停

正在暂停

暂停已完成

已暂停

附加失败

分离

重启失败

已暂停

发送和接收

运行

正在暂停

OID 请求

已暂停

重新启动

运行

正在暂停

主筛选器驱动程序事件的定义如下:

筛选器附加
NDIS 调用驱动程序的 FilterAttach 函数,将筛选器模块附加到驱动程序堆栈。 有关附加筛选器模块的详细信息,请参阅 附加筛选器模块

附加已完成
当筛选器模块处于 “正在附加” 状态,并且筛选器驱动程序完成筛选器模块所需的所有资源的初始化时,筛选器模块将进入 “已暂停” 状态。

筛选器分离
NDIS 调用驱动程序的 FilterDetach 函数,以从驱动程序堆栈中分离筛选器模块。 有关详细信息,请参阅 分离筛选器模块

筛选器重启
NDIS 调用驱动程序的 FilterRestart 函数来重启暂停的筛选器模块。 有关详细信息,请参阅 启动筛选器模块

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

筛选器暂停
NDIS 调用驱动程序的 FilterPause 函数来暂停筛选器模块。 有关详细信息,请参阅 暂停筛选器模块

暂停已完成
在驱动程序完成停止发送和接收操作所需的所有操作后,暂停操作完成,筛选器模块处于 “已暂停” 状态。

附加失败
例如,如果 NDIS 调用驱动程序的 FilterAttach 函数,但附加操作 (失败,因为所需的资源在) 不可用,则筛选器模块将返回到 “分离” 状态。

重启失败
如果 NDIS 调用驱动程序的 FilterRestart 函数,但重启尝试失败,筛选器模块将返回到 “已暂停” 状态。

发送和接收操作
驱动程序可以处理 处于“正在运行” 和“ 正在暂停 ”状态的发送和接收操作。 有关发送和接收操作的详细信息,请参阅 筛选器模块发送和接收操作

OID 请求
驱动程序可以处理处于“正在运行”、“正在重启”、“已暂停”和“正在暂停”状态的 OID 请求。 有关 OID 请求的详细信息,请参阅 筛选模块 OID 请求