CoNDIS MCM OID 请求

与其他 CoNDIS 调用管理器一样, (MMC 的微型端口调用管理器) 可以查询或设置 CoNDIS 客户端驱动程序的操作参数。 CoNDIS 客户端驱动程序可以查询或设置 MCM 的调用管理器参数或微型端口驱动程序参数。

为了向 CoNDIS 客户端驱动程序发起 OID 请求,MCM 调用 NdisMCmOidRequest 函数。

下图说明了 MCM 发起的 OID 请求。

说明 mcm 发起的 oid 请求的示意图。

MCM 驱动程序调用 NdisMCmOidRequest 函数后,NDIS 调用客户端驱动程序的 ProtocolCoOidRequest 函数。

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

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

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

CoNDIS 客户端驱动程序可以查询或设置 MMC 的调用管理器操作参数或微型端口操作参数。 为了发起 MCM 调用管理器参数的 OID 请求,客户端调用 NdisCoOidRequest 函数,并在 NdisAfHandle 参数处提供有效的地址系列 (AF) 句柄。 为了发起 MCM 微型端口参数的 OID 请求,客户端调用 NdisCoOidRequest 函数并将 AF 句柄设置为 NULL

客户端调用 NdisCoOidRequest 函数后,NDIS 调用 MCM 驱动程序的 MiniportCoOidRequest 函数或 ProtocolCoOidRequest 函数。

下图演示了 MCM 的微型端口参数的 OID 请求。

说明 mcm 的微型端口参数的 oid 请求的示意图。

下图演示了 MCM 的调用管理器参数的 OID 请求。

说明 mcm 的调用管理器参数的 oid 请求的示意图。

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

如果 ProtocolCoOidRequestMininportCoOidRequest 返回NDIS_STATUS_PENDING,则在 MCM 通过调用 NdisMCoOidRequestComplete 或 NdisMCmOidRequestComplete 函数完成 OID 请求后,NDIS 调用客户端的 ProtocolCoOidRequestComplete 函数。 在这种情况下,NDIS 在 ProtocolCoOidRequestCompleteOidRequest 参数处传递请求的结果。 NDIS 在 ProtocolCoOidRequestCompleteStatus 参数中传递请求的最终状态。

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