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

对于它管理的每个适配器,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 函数和初始化尝试失败,适配器将返回到“已停止”状态。

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

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

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

停止微型端口适配器

初始化微型端口适配器

微型端口适配器关闭

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

暂停适配器

启动适配器