微型端口适配器状态和操作

对于它管理的每个适配器,NDIS 6.0 或更高版本的微型端口驱动程序必须支持以下一组操作状态:

停止
“已停止”状态是所有适配器的初始状态。 当适配器处于“已停止”状态时,NDIS 可以调用驱动程序的 MiniportInitializeEx 函数来初始化适配器。

关闭
在“关闭”状态下,系统必须关闭并重启,系统才能再次使用适配器。

正在初始化
在“正在初始化”状态下,微型端口驱动程序完成初始化适配器所需的任何操作。

暂停
在“已暂停”状态下,适配器不指示已接收的网络数据或接受发送请求。

重新 启动
在“正在重启”状态下,微型端口驱动程序完成重启适配器的发送和接收操作所需的任何操作。

运行
在“正在运行”状态下,微型端口驱动程序对适配器执行发送和接收处理。

暂停
在暂停状态下,微型端口驱动程序完成停止适配器的发送和接收操作所需的任何操作。

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

事件 \ 状态 停止 关机 正在初始化 已暂停 重新启动 运行 正在暂停

MiniportInitializeEx

正在初始化

初始化已完成

已暂停

MiniportShutdownEx

关机

关机

关机

关机

MiniportHaltEx

停止

MiniportRestart

重新启动

重启已完成

运行

MiniportPause

正在暂停

暂停已完成

已暂停

初始化失败

停止

重启失败

已暂停

发送和接收操作

运行

正在暂停

OID 请求

已暂停

重新启动

运行

正在暂停

注意 上表中列出的事件是 NDIS 6.0 或更高版本适配器的主要事件。

注意 重置操作不会影响微型端口适配器的操作状态。 重置操作正在进行时,适配器的状态可能会更改。 例如,当重置操作正在进行时,NDIS 可能会调用驱动程序的暂停处理程序。 在这种情况下,驱动程序可以按任何顺序完成重置或暂停操作,同时遵循每个操作的正常要求。 对于重置操作,驱动程序可能会使传输请求数据包失败,也可以让数据包保持排队并稍后完成。 但是,应注意,在传输数据包挂起时,过分的驱动程序无法完成暂停操作。

主微型端口驱动程序事件定义如下:

MiniportInitializeEx
NDIS 调用驱动程序的 MiniportInitializeEx 函数来初始化适配器。 有关适配器初始化的详细信息,请参阅 初始化微型端口适配器

初始化已完成
MiniportInitializeEx 成功返回后,初始化操作完成,适配器处于“已暂停”状态。

MiniportShutdownEx
NDIS 调用驱动程序的 MiniportShutdownEx 函数来关闭适配器。 有关详细信息,请参阅 微型端口适配器关闭

MiniportHaltEx
NDIS 调用驱动程序的 MiniportHaltEx 函数来停止适配器。 有关详细信息,请参阅 停止微型端口适配器

MiniportRestart
NDIS 调用驱动程序的 MiniportRestart 函数来重启已暂停的适配器。 由于适配器在初始化后处于“已暂停”状态,因此在适配器初始化完成后,还需要此事件来启动适配器。 有关详细信息,请参阅 启动适配器

重启已完成
驱动程序准备好处理发送和接收操作后,重启操作完成,适配器处于“正在运行”状态。

MiniportPause
NDIS 调用驱动程序的 MiniportPause 函数来暂停适配器。 有关详细信息,请参阅 暂停适配器

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

注意 在暂停操作完成之前,驱动程序必须等待 NDIS 返回其所有未完成的接收指示。

初始化失败
如果 NDIS 调用驱动程序的 MiniportInitializeEx 函数,并且初始化尝试失败,适配器将返回到 Halted 状态。

重启失败
如果 NDIS 调用驱动程序的 MiniportRestart 函数,但重启尝试失败,适配器将保持“暂停”状态。

发送和接收操作
驱动程序必须处理处于“正在运行”和“暂停”状态的发送和接收操作。 有关发送和接收操作的详细信息,请参阅 微型端口驱动程序发送和接收操作

OID 请求
驱动程序必须处理处于“正在运行”、“正在重启”、“已暂停”和“正在暂停”状态的 OID 请求。 有关 OID 请求的详细信息,请参阅 适配器的 OID 请求

停止微型端口适配器

初始化微型端口适配器

微型端口适配器关闭

微型端口驱动程序发送和接收操作

暂停适配器

启动适配器