从 NDIS 协议驱动程序生成 OID 请求

为了向基础驱动程序发出 OID 请求,协议调用 NdisOidRequest 函数。

下图演示了协议驱动程序发起的 OID 请求。

说明协议驱动程序发起的 OID 请求的示意图。

在协议驱动程序调用 NdisOidRequest 函数后,NDIS 将调用下一个基础驱动程序的请求函数。 有关微型端口驱动程序如何处理 OID 请求的详细信息,请参阅 适配器的 OID 请求。 有关筛选器驱动程序如何处理 OID 请求的详细信息,请参阅 筛选模块 OID 请求

若要同步完成, NdisOidRequest 将返回NDIS_STATUS_SUCCESS或错误状态。 为了异步完成, NdisOidRequest 返回NDIS_STATUS_PENDING。

如果 NdisOidRequest 返回NDIS_STATUS_PENDING,则 NDIS 在基础驱动程序完成 OID 请求后调用 ProtocolOidRequestComplete 函数。 在这种情况下,NDIS 在 ProtocolOidRequestCompleteOidRequest 参数中传递请求的结果。 NDIS 在 ProtocolOidRequestCompleteStatus 参数中传递请求的最终状态。

如果 NdisOidRequest 返回NDIS_STATUS_SUCCESS,它将在 OidRequest 参数的 NDIS_OID_REQUEST 结构中返回查询请求的结果。 在这种情况下,NDIS 不调用 ProtocolOidRequestComplete 函数。

若要确定基础驱动程序成功处理了哪些信息,发出 OID 请求的协议驱动程序必须在 OID 请求返回后检查NDIS_OID_REQUEST结构中的 SupportedRevision 成员中的值。 有关 NDIS 版本信息的详细信息,请参阅 指定 NDIS 版本信息

如果基础驱动程序应将 OID 请求与后续状态指示相关联,则协议驱动程序应在NDIS_OID_REQUEST结构中设置 RequestId 成员。 当基础驱动程序发出状态指示时,它会将 NDIS_STATUS_INDICATION 结构中的 RequestId 成员设置为 OID 请求中提供的值。

当绑定处于“正在重启”、“正在运行”、“暂停”或“已暂停”状态时,驱动程序可以调用 NdisOidRequest