重启绑定

若要重启暂停的绑定,NDIS 向协议驱动程序发送网络即插即用 (PnP) 重启事件通知。 协议驱动程序收到重启通知后,受影响的绑定将进入“正在重启”状态。

为了发送重启通知,NDIS 调用协议驱动程序的 ProtocolNetPnPEvent 函数。 NDIS 传递给 ProtocolNetPnPEventNET_PNP_EVENT_NOTIFICATION 结构指定 NetEvent 成员中的 NetEventRestart而 Buffer 成员包含指向 NDIS_PROTOCOL_RESTART_PARAMETERS 结构的指针。 NDIS 提供指向 NDIS_PROTOCOL_RESTART_PARAMETERS 结构的 RestartAttributes 成员中的 NDIS_RESTART_ATTRIBUTES 结构的指针。

注意 暂停绑定时,NDIS 可能已重新配置驱动程序堆栈。 新的堆栈配置可以为基础适配器支持一组不同的功能。 这些新功能可能会影响协议驱动程序在绑定上的通信方式。

协议驱动程序应使用 NDIS_PROTOCOL_RESTART_PARAMETERS 结构中的信息,以避免不必要的 OID 请求。

在“正在重启”状态下,协议驱动程序可以:

  • 使用 OID 请求查询驱动程序堆栈。 例如,驱动程序可以使用 OID_GEN_RECEIVE_SCALE_CAPABILITIES 了解对接收方缩放的支持。

  • 如有必要,重新分配 NET_BUFFERNET_BUFFER_LIST 池。

  • 枚举基础筛选器模块的列表。

  • 使用 OID 请求显示新的适配器功能。

驱动程序准备好恢复绑定的发送和接收操作后,绑定将进入“正在运行”状态。