在中间驱动程序中响应设置和查询请求

由于 NDIS 中间驱动程序绑定到过重的 NDIS 驱动程序,因此它还可以从其 MiniportOidRequest 函数接收查询和设置。 在某些情况下,中间驱动程序只是将此类请求传递到基础微型端口驱动程序。 否则,它可以响应这些查询,并根据需要设置在其上边缘导出的介质。 请注意,中间驱动程序必须始终通过它从上层 NDIS 驱动程序接收的任何 OID_PNP_Xxx 请求传递到基础微型端口驱动程序。 NDIS 6.0 中间驱动程序也可以取消 OID 请求。

若要将请求向下转发到基础驱动程序,NDIS 中间驱动程序会调用 NdisAllocateCloneOidRequest 来分配克隆 NDIS_OID_REQUEST 结构。 驱动程序调用 NdisOidRequest 函数来发送请求。 请求完成后,驱动程序必须调用 NdisFreeCloneOidRequest 函数来释放NDIS_OID_REQUEST结构。

若要取消 OID 请求,请调用 NdisCancelOidRequest 函数。

通常,中间驱动程序接收的常规 OID 与中间驱动程序发送到基础微型端口驱动程序的 OID 相同或相似。 中间驱动程序接收的中等特定 OID 是过度配置驱动程序所需的介质类型。

如果中间驱动程序本身处理 OID 的设置,而不是将设置请求传递给基础微型端口,则应验证要设置的值。 如果中间驱动程序确定要设置的值超出边界,则它应使设置请求失败。

注意 如果中间驱动程序修改它转发到基础微型端口驱动程序的 TCP 网络数据的内容,导致无法对网络数据执行 TCP 卸载功能,则中间驱动程序应响应状态为 NDIS_STATUS_NOT_SUPPORTED 的 OID_TCP_OFFLOAD_CURRENT_CONFIG 查询,而不是将请求向下传递到基础微型端口。

有关响应中间驱动程序中的集和查询的其他信息,请参阅 获取和设置微型端口驱动程序信息和 WMI 的 NDIS 支持