NdisMCmOidRequest 函数 (ndis.h)

NdisMCmOidRequest 函数将 OID 请求从微型端口调用管理器 (MCM) 驱动程序发送到 CoNDIS 客户端。

语法

NDIS_STATUS NdisMCmOidRequest(
  [in]           NDIS_HANDLE       NdisAfHandle,
  [in, optional] NDIS_HANDLE       NdisVcHandle,
  [in, optional] NDIS_HANDLE       NdisPartyHandle,
                 PNDIS_OID_REQUEST NdisOidRequest
);

参数

[in] NdisAfHandle

标识 OID 请求定向到的地址系列 (AF) 和隐式客户端的句柄。 MCM 驱动程序最初获取此句柄作为其 ProtocolCmOpenAf 函数的输入参数。

[in, optional] NdisVcHandle

标识虚拟连接的句柄, (VC) 调用方请求或设置其信息(如果请求特定于 VC)。 否则,如果此请求不是特定于 VC 的,则此参数为 NULL。 对于任何特定于 VC 的请求,调用方最初是在使用 NdisMCmCreateVc 函数创建 VC 时获取此句柄,或者作为其 ProtocolCoCreateVc 函数的输入参数。

[in, optional] NdisPartyHandle

一个句柄,用于标识调用方正在请求或设置其信息的多点 VC 上的参与方(如果请求特定于一方)。 否则,如果此请求不是特定于参与方的,则此参数为 NULL。 对于任何特定于参与方的请求,MCM 驱动程序最初获取此句柄作为其 ProtocolCmAddParty 函数的输入参数。

NdisOidRequest

指向调用方分配的缓冲区的指针,该缓冲区包含 NDIS_OID_REQUEST 结构。

返回值

NdisMCmOidRequest 返回以下值之一:

返回代码 说明
NDIS_STATUS_SUCCESS
请求操作已成功完成。
NDIS_STATUS_PENDING
请求正在异步处理,NDIS 将调用调用方请求完成后的 ProtocolCoOidRequestComplete 函数。
NDIS_STATUS_INVALID_OID
OidRequest 参数的 NDIS_OID_REQUEST 结构的 Oid 成员中指定的 OID_XXX 代码无效或不受基础驱动程序支持。
NDIS_STATUS_INVALID_LENGTH或NDIS_STATUS_BUFFER_TOO_SHORT
在 OidRequest NDIS_OID_REQUEST 结构的 InformationBufferLength 成员中指定的值与给定OID_XXX 代码的要求不匹配。 如果信息缓冲区太小,则当 NdisMCmOidRequest 返回时,NDIS_OID_REQUEST 的 BytesNeeded 成员将包含 InformationBufferLength 的正确值。
NDIS_STATUS_INVALID_DATA
在给定NDIS_OID_REQUEST结构中的 InformationBuffer 中提供的数据对于给定的 OID_XXX 代码无效。
NDIS_STATUS_NOT_SUPPORTED或NDIS_STATUS_NOT_RECOGNIZED
客户端驱动程序不支持请求的操作。
NDIS_STATUS_RESOURCES
由于资源短缺,请求无法满足。 通常,此返回值指示分配内存的尝试失败,但不一定指示同一请求(如果稍后提交)将因相同原因而失败。
NDIS_STATUS_FAILURE
此值通常是非特定默认值,当没有更具体的NDIS_STATUS_XXX 状态代码应用时,将返回该值。
NDIS_STATUS_REQUEST_ABORTED
目标驱动程序已停止处理请求。

注解

若要启动对 CoNDIS 客户端的 OID 请求,MCM 驱动程序调用 NdisMCmOidRequest 函数。 在 MCM 驱动程序调用 NdisMCmOidRequest 之前,驱动程序为其请求分配内存并初始化 NDIS_OID_REQUEST 结构。 MCM 使用 CoNDIS OID 代码设置 NDIS_OID_REQUEST 结构的 Oid 成员。

MCM 驱动程序可以调用 NdisMCmOidRequest 来传达面向连接的信息,例如 NdisAfHandle 参数标识的客户端地址更改。

在 MCM 调用 NdisMCmOidRequest 后,NDIS 调用客户端的 ProtocolCoOidRequest 函数。

如果 MCM 驱动程序的请求特定于 VC 或特定于参与方,则 MCM 驱动程序还会分别在 NdisVcHandleNdisPartyHandle 参数处传递非 NULL 值。

如果 NdisMCmOidRequest 返回NDIS_STATUS_PENDING,则请求将异步处理,NDIS 将调用 MCM 的请求完成后的 ProtocolCoOidRequestComplete 函数。 如果 NdisMCmOidRequest 返回任何其他状态,则当 NdisMCmOidRequest 返回且 NDIS 不调用 ProtocolCoOidRequestComplete 时,请求将完成。

有关定义为与 NdisMCmOidRequest 一起使用的 OID 的详细信息,请参阅 NDIS OID

要求

要求
最低受支持的客户端 在 NDIS 6.0 及更高版本中受支持。
目标平台 桌面
标头 ndis.h (包括 Ndis.h)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI 符合性规则 Irql_MCM_Function (ndis)

另请参阅

NDIS_OID_REQUEST

NdisMCmCreateVc

ProtocolCmAddParty

ProtocolCmOpenAf

ProtocolCoCreateVc

ProtocolCoOidRequest

ProtocolCoOidRequestComplete