CoNDIS MCM OID 请求

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

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

下图演示了 MCM 发起的 OID 请求。

diagram illustrating an oid request that an mcm originated.

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

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

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

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

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

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

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

diagram illustrating an oid request for the miniport parameters of the mcm.

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

diagram illustrating an oid request for the call manager parameters of the mcm.

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

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

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