微型端口驱动程序硬件重置
微型端口驱动程序必须向 NdisMRegisterMiniportDriver 注册 MiniportResetEx 函数。
MiniportResetEx 可以通过调用 NdisMResetComplete 以同步或异步方式完成 (请参阅下图) 。
MiniportResetEx 应:
禁用进一步的中断。
清除与正在进行的任何发送关联的数据。 例如,在用于 (DMA) 设备的总线主直接内存访问的环形缓冲区上,应清除用于发送缓冲区的指针。 反序列化和面向连接的微型端口驱动程序必须为任何排队发送请求返回NDIS_STATUS_REQUEST_ABORTED。
将硬件状态和微型端口驱动程序的内部状态还原到重置操作之前存在的状态。
微型端口驱动程序负责还原设备的硬件状态,但多播地址、数据包筛选器、任务卸载设置和唤醒模式除外。 这些设置由微型端口驱动程序或 NDIS 还原。 微型端口驱动程序通过在 AddressingReset 参数中返回布尔值来确定谁负责还原这些设置。
如果微型端口驱动程序在 AddressingReset 参数中返回 FALSE,微型端口驱动程序会将其多播地址、数据包筛选器、任务卸载设置和唤醒模式还原到其初始状态。 如果微型端口驱动程序在 AddressingReset 中返回 TRUE,则 NDIS 调用无连接微型端口驱动程序的 MiniportOidRequest 函数或面向连接的微型端口驱动程序的 MiniportCoOidRequest 函数来设置以下配置设置:
通过 OID_GEN_CURRENT_PACKET_FILTER的一组请求筛选网络数据包。
通过 OID_802_3_MULTICAST_LIST集请求的多播地址列表。
任务通过 OID_OFFLOAD_ENCAPSULATION集请求卸载封装设置。
通过一组 OID_PNP_ADD_WAKE_UP_PATTERN请求的电源管理唤醒模式。 注意 从 NDIS 6.20 开始,微型端口驱动程序必须还原通过 OID_PM_ADD_WOL_PATTERN 设置的唤醒模式。