CoNDIS 协议驱动程序 OID 请求

CoNDIS 协议驱动程序(客户端或调用管理器)可以查询或设置微型端口驱动程序和其他协议驱动程序的操作参数。 CoNDIS 协议驱动程序还可以在微型端口调用管理器中查询或设置信息, (MMC) 。 有关 OID 请求和 MCM 的详细信息,请参阅 CoNDIS MCM OID 请求

为了向基础驱动程序发起 OID 请求,协议驱动程序调用 NdisCoOidRequest 函数并将地址系列 (AF) 句柄(在 NdisAfHandle 参数处 )设置为 NULL。 为了向另一个 CoNDIS 协议驱动程序发起 OID 请求,协议驱动程序调用 NdisCoOidRequest 并提供有效的 AF 句柄。

在协议驱动程序调用 NdisCoOidRequest 函数后,NDIS (基础驱动程序或其他 CoNDIS 协议驱动程序) 调用另一个驱动程序的 OID 请求函数。 对于微型端口驱动程序,NDIS 调用 MiniportCoOidRequest 函数。 对于协议驱动程序,NDIS 调用 ProtocolCoOidRequest 函数。

下图演示了定向到微型端口驱动程序的 OID 请求。

说明定向到微型端口驱动程序的 OID 请求的关系图。

下图演示了定向到协议驱动程序的 OID 请求。

说明定向到协议驱动程序的 OID 请求的示意图。

为了同步完成, NdisCoOidRequest 返回NDIS_STATUS_SUCCESS或错误状态。 为了异步完成, NdisCoOidRequest 返回NDIS_STATUS_PENDING。

如果 NdisCoOidRequest 返回NDIS_STATUS_PENDING,则 NDIS 会在其他驱动程序通过调用 NdisMCoOidRequestComplete 函数或 NdisCoOidRequestComplete 函数完成 OID 请求后调用 ProtocolCoOidRequestComplete 函数。 在这种情况下,NDIS 在 ProtocolCoOidRequestCompleteOidRequest 参数处传递请求的结果。 NDIS 在 ProtocolCoOidRequestCompleteStatus 参数中传递请求的最终状态。

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

如果基础驱动程序应将 OID 请求与后续状态指示相关联,则协议驱动程序应在NDIS_OID_REQUEST结构中设置 RequestIdRequestHandle 成员。 如果基础驱动程序发出状态指示,则驱动程序将NDIS_STATUS_INDICATION结构中的 RequestId 成员设置为从 NDIS_OID_REQUEST 结构的 RequestId 成员和 NDIS_STATUS_INDICATION 结构中的 DestinationHandle 成员到 NDIS_OID_REQUEST 结构的 RequestHandle 成员的值。

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