NdisOidRequest 函数 (ndis.h)

NdisOidRequest 函数将请求转发给基础驱动程序,以查询适配器的功能或状态或设置适配器的状态。

语法

NDIS_STATUS NdisOidRequest(
  [in] NDIS_HANDLE       NdisBindingHandle,
  [in] PNDIS_OID_REQUEST OidRequest
);

参数

[in] NdisBindingHandle

NdisOpenAdapterEx 函数返回的句柄,用于标识绑定上的目标适配器。

[in] OidRequest

指向 NDIS_OID_REQUEST 结构的指针,该结构指定使用给定OID_XXX 代码请求的操作,以查询适配器的状态或设置适配器的状态。

返回值

基础驱动程序确定哪个NDIS_STATUS_XXX 代码 NdisOidRequest 返回,但通常是以下值之一:

返回代码 说明
NDIS_STATUS_SUCCESS
请求操作成功完成。
NDIS_STATUS_PENDING
请求正在异步处理,NDIS 将调用调用方的请求完成请求时 ProtocolOidRequestComplete 函数。
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 代码的要求不匹配。 如果信息缓冲区太小,则 BytesNeeded 成员在从 NdisOidRequest 返回时包含 InformationBufferLength 的正确值。
NDIS_STATUS_INVALID_DATA
给定NDIS_OID_REQUEST结构中 InformationBuffer 提供的数据对于给定的 OID_XXX 代码无效。
NDIS_STATUS_NOT_SUPPORTED或NDIS_STATUS_NOT_RECOGNIZED
基础驱动程序不支持请求的操作。
NDIS_STATUS_RESOURCES
由于资源短缺,无法满足请求。 通常,此返回值表示尝试分配内存失败,但它不一定指示同一请求(稍后提交)将因相同原因而失败。
NDIS_STATUS_NOT_ACCEPTED
基础驱动程序尝试了请求的操作,通常是 NIC 上的一个集,但它失败。 例如,尝试设置过多的多播地址可能会导致返回此值。
NDIS_STATUS_CLOSING或NDIS_STATUS_CLOSING_INDICATING
基础驱动程序由于正在执行关闭操作而失败请求的操作。
NDIS_STATUS_RESET_IN_PROGRESS
基础微型端口驱动程序目前无法满足请求,因为它当前正在重置受影响的 NIC。 调用方的 ProtocolStatusEx 函数是通过NDIS_STATUS_RESET_START调用的,以指示重置正在进行中。 此返回值不一定指示同一请求(稍后提交)将失败,原因相同。
NDIS_STATUS_FAILURE
此值通常是非特定默认值,当没有更具体的NDIS_STATUS_XXX 导致基础驱动程序失败请求时返回。

注解

协议驱动程序必须分配足够的内存来保存与指定 OID 关联的信息缓冲区。 驱动程序还必须在 OidRequest 分配和设置缓冲区,然后才能调用 NdisOidRequest。 必须从非分页池分配这两个缓冲区,因为基础驱动程序在处理请求时在引发 IRQL 时运行。

NdisOidRequest 将请求转发给基础驱动程序或处理请求本身。 如果下一个较低驱动程序是 NDIS 中间驱动程序,则它可以使用自己的 OID 特定请求调用 NdisOidRequest ,然后才能完成最初由高级驱动程序提交的请求。

返回的某些错误可恢复,包括以下内容:

也就是说,驱动程序可以适当修改 OidRequest 上的数据包,以更正 informationBuffer 上的缓冲区OID_XXX 代码或缓冲区的大小或内容,并将请求数据包重新提交到 NdisOidRequest。 如果原始调用指示正在进行重置,或者资源短缺(可能是临时的),则重新提交 到 NdisOidRequest 时,可能会满足相同的数据包。

NDIS 库维护基础微型端口驱动程序的绑定。 如果给定的 OID 与系统为其提供筛选器库的系统定义的中等类型相关联,则 NDIS 可以返回特定于绑定的查询的信息。

有关常规和媒体特定的 OID 及其各自的相关信息缓冲区的详细信息,请参阅 NDIS OID。

要求

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

另请参阅

NDIS_OID_REQUEST

NdisOpenAdapterEx

ProtocolOidRequestComplete

ProtocolStatusEx