NdisRequest 函数 (ndis.h)
注释 NDIS 5。 x 已被弃用,并被 NDIS 6 取代。 x。 有关新的 NDIS 驱动程序开发,请参阅从 Windows Vista 开始网络驱动程序。 有关移植 NDIS 5 的信息。 将 x 驱动程序 到 NDIS 6。 x,请参阅 将 NDIS 5.x 驱动程序移植到 NDIS 6.0。
NdisRequest 将请求转发给其查询其 NIC 的功能或状态或设置 NIC 状态的基础驱动程序。
语法
void NdisRequest(
[out] PNDIS_STATUS Status,
[in] NDIS_HANDLE NdisBindingHandle,
[in] PNDIS_REQUEST NdisRequest
);
参数
[out] Status
指向在此函数返回时设置的调用方提供的变量的指针。 基础驱动程序确定返回NDIS_STATUS_XXX,但通常是以下值之一:
NDIS_STATUS_SUCCESS
请求的作已成功完成。NDIS_STATUS_PENDING
请求正在异步处理,调用方 ProtocolRequestComplete 函数在完成时调用。NDIS_STATUS_INVALID_OID
在 NdisRequest 的 NDIS_REQUEST 结构化缓冲区的 Oid 成员中指定的 OID_XXX 代码无效或不受基础驱动程序支持。NDIS_STATUS_INVALID_LENGTH或NDIS_STATUS_BUFFER_TOO_SHORT
NdisRequest 中NDIS_REQUEST结构化缓冲区 成员 InformationBufferLength 中指定的值与给定 OID_XXX 代码的要求不匹配。 如果信息缓冲区太小,则 BytesNeeded 成员在从 NdisRequest返回时,InformationBufferLength 包含正确的值。NDIS_STATUS_INVALID_DATA
给定 NDIS_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 驱动程序目前无法满足请求,因为它当前正在重置网卡。 调用方 ProtocolStatus 函数或将使用NDIS_STATUS_RESET_START调用,以指示重置正在进行。 此返回值不一定指示同一请求(稍后提交)将因相同原因而失败。NDIS_STATUS_FAILURE
此值通常是非特定默认值,当没有更具体的NDIS_STATUS_XXX 导致基础驱动程序失败请求时返回。
[in] NdisBindingHandle
指定 NdisOpenAdapter 返回的句柄,该句柄标识调用方绑定到的下一个较低驱动程序的目标 NIC 或虚拟适配器。
[in] NdisRequest
指向缓冲结构的指针,该结构指定使用给定OID_ XXX 代码为查询或集请求的作。
返回值
没有
言论
协议驱动程序必须为其请求的作OID_XXX 关联的信息缓冲区分配足够的内存。 驱动程序还必须在 NdisRequest 分配和设置缓冲区,然后才能调用 NdisRequest。 必须从非分页池分配这两个缓冲区,因为基础驱动程序在处理请求时在引发 IRQL 时运行。
对于分层在中间 NDIS 驱动程序之上的调用方,NdisRequest 将请求转发给下一低级驱动程序,该驱动程序返回有关其自己的功能的信息,或指示该驱动程序以调用方确定的方式处理特定功能。 如果下一个较低驱动程序是 NDIS 中间驱动程序,则它可以使用自己的 OID 特定请求调用 NdisRequest,然后才能完成最初由高级协议提交的请求。
状态 返回的某些错误可恢复,包括:
NDIS_STATUS_INVALID_OID
NDIS_STATUS_INVALID_LENGTH
NDIS_STATUS_BUFFER_TOO_SHORT
NDIS_STATUS_INVALID_DATA
NDIS_STATUS_RESOURCES
NDIS_STATUS_RESET_IN_PROGRESS
也就是说,驱动程序可以在 NdisRequest 适当地修改数据包,以更正 OID_XXX 代码和/或 InformationBuffer 缓冲区的大小或内容,并将请求数据包重新提交到 NdisRequest。 如果原始调用指示正在进行重置,或者资源短缺(可能是临时的),则重新提交到 NdisRequest 时,可能会满足相同的数据包。
NDIS 库维护基础微型端口驱动程序的绑定。 如果给定的 OID 与系统定义的中等类型相关联,则 NDIS 可以返回特定于绑定的查询的信息,系统为其提供筛选器库。
有关常规和媒体特定的 OID 及其各自的相关信息缓冲区的详细信息,请参阅 NDIS 对象标识符。
- 目标平台:通用
- 版本:Windows Vista 中不支持 NDIS 6.0 驱动程序。 请改用 NdisOidRequest。 在 Windows Vista 和 Windows XP 中支持 NDIS 5.1 驱动程序。
要求
要求 | 价值 |
---|---|
标头 | ndis.h (包括 Ndis.h) |
库 | Ndis.lib |
IRQL | IRQL <= DISPATCH_LEVEL |