中间驱动程序重置操作

中间驱动程序必须准备好处理以下情况:由于基础 NIC 已重置,因此可以删除其未完成的发送到基础驱动程序的绑定。

基础驱动程序通常会重置 NIC,因为当 NDIS 超时排队的发送或绑定到 NIC 的请求时,NDIS 会调用微型端口驱动程序的 MiniportResetEx 函数。 如果重置基础 NIC,NDIS 会调用每个绑定协议和中间驱动程序的 ProtocolStatusEx (或 ProtocolCoStatusEx) 函数,其状态为 NDIS_STATUS_RESET_START。 微型端口驱动程序完成重置后,NDIS 再次调用 ProtocolStatusEx (或 ProtocolCoStatusEx) ,状态为 NDIS_STATUS_RESET_END。

重置 NIC 时,如果绑定的中间驱动程序具有挂起到该 NIC 的任何传输网络数据,则 NDIS 会将这些网络数据以适当的状态填写回中间驱动程序。 完成重置后,中间驱动程序必须再次重新提交这些网络数据。

当中间驱动程序收到NDIS_STATUS_RESET_START状态时,它应:

  • 保留任何准备好传输的网络数据,直到 ProtocolStatusExProtocolCoStatusEx 收到NDIS_STATUS_RESET_END通知。

  • 保留任何接收的网络数据,这些数据已准备好指示到下一个更高的驱动程序,直到 ProtocolStatusEx (或 ProtocolCoStatusEx) 收到NDIS_STATUS_RESET_END通知。

  • 清理它为正在进行的操作和 NIC 状态维护的任何内部状态。

在 ProtocolStatusEx (或 ProtocolCoStatusEx) 收到NDIS_STATUS_RESET_END后,中间驱动程序可以继续发送网络数据、发出请求和向更高级别的驱动程序发出指示。

中间驱动程序不提供 MiniportResetEx 函数。