NdisSynchronousOidRequest 函数 (ndis.h)
协议驱动程序调用 NdisSynchronousOidRequest 函数来发起新的同步 OID 请求并将其颁发给基础驱动程序。
语法
NDIS_STATUS NdisSynchronousOidRequest(
[in] NDIS_HANDLE NdisBindingHandle,
[in] NDIS_OID_REQUEST *OidRequest
);
参数
[in] NdisBindingHandle
标识绑定上的目标微型端口适配器的 NdisOpenAdapterEx 函数返回的句柄。
[in] OidRequest
指向 NDIS_OID_REQUEST 结构的指针,该结构指定使用给定的 OID_Xxx 代码请求的操作。 结构可以指定 OID 查询、集或方法请求。
返回值
基础驱动程序确定 NdisSynchronousOidRequest 返回的NDIS_STATUS_XXX 代码,但它通常是以下值之一:
返回代码 | 说明 |
---|---|
|
请求操作已成功完成。 |
|
在 OidRequest 处的 NDIS_OID_REQUEST 结构化缓冲区的 Oid 成员中指定的 OID_Xxx 代码无效或不受基础驱动程序支持。 |
|
在 OidRequest 的NDIS_OID_REQUEST结构化缓冲区的 InformationBufferLength 成员中指定的值与给定OID_Xxx 代码的要求不匹配。 如果信息缓冲区太小,则 BytesNeeded 成员在从 NdisSynchronousOidRequest 返回时包含 InformationBufferLength 的正确值。 |
|
在给定NDIS_OID_REQUEST结构中的 InformationBuffer 中提供的数据对于给定的 OID_Xxx 代码无效。 |
|
基础驱动程序不支持请求的操作。 |
|
由于资源短缺,无法满足请求。 通常,此返回值表示尝试分配内存失败,但不一定指示稍后提交的同一请求将因相同原因而失败。 |
|
基础驱动程序尝试了请求的操作(通常是 NIC 上的一个集),但失败了。 例如,尝试设置过多的多播地址可能会导致返回此值。 |
|
基础驱动程序使请求的操作失败,因为关闭操作正在进行中。 |
|
基础微型端口驱动程序目前无法满足请求,因为它当前正在重置受影响的 NIC。 调用方 ProtocolStatusEx 函数已调用或将结合NDIS_STATUS_RESET_START调用,以指示重置正在进行。 此返回值不一定指示稍后提交的同一请求将因相同原因而失败。 |
|
此值通常是非特定默认值,当没有更具体的 NDIS_STATUS_Xxx 值导致基础驱动程序请求失败时返回。 |
注解
NdisSynchronousOidRequest 函数不能用于常规 OID 请求。 对于常规 OID 请求,请改用 NdisOidRequest 函数。 NdisSynchronousOidRequest 只能用于 NDIS 支持用于同步 OID 接口的 OID。 大多数协议驱动程序不需要调用 NdisSynchronousOidRequest
在协议驱动程序发起的任何同步 OID 请求完成之前,协议驱动程序不得关闭适配器绑定。
无需协议驱动程序即可实现 ProtocolOidRequestComplete 或 ProtocolDirectOidRequestComplete 来调用 NdisSynchronousOidRequest。 顾名思义,同步 OID 请求始终同步完成,因此没有异步回调。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 10 版本 1709 |
目标平台 | 通用 |
标头 | ndis.h (包括 Ndis.h) |
Library | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |