OID_RECEIVE_FILTER_ALLOCATE_QUEUE
过度分配驱动程序发出OID_RECEIVE_FILTER_ALLOCATE_QUEUE的对象标识符 (OID) 方法请求,以分配具有初始配置参数集的队列。
NDIS_OID_REQUEST 结构的 InformationBuffer 成员包含指向 NDIS_RECEIVE_QUEUE_PARAMETERS 结构的指针。 从 OID 方法请求成功返回后,NDIS_OID_REQUEST 结构的 InformationBuffer 成员包含指向具有新队列标识符的 NDIS_RECEIVE_QUEUE_PARAMETERS 结构的指针。
对于 NDIS 6.20 和更高版本的微型端口驱动程序,OID_RECEIVE_FILTER_ALLOCATE_QUEUE的 OID 方法请求是可选的。 支持虚拟机队列(VMQ)接口的微型端口驱动程序是必需的。
过度配置驱动程序使用请求的队列配置初始化 NDIS_RECEIVE_QUEUE_PARAMETERS 结构。 NDIS 在 NDIS_RECEIVE_QUEUE_PARAMETERS 结构的 QueueId 成员中分配队列标识符,并将方法请求传递给微型端口驱动程序。
注意 过度的驱动程序可以在 NDIS_RECEIVE_QUEUE_PARAMETERS 结构的 标志 成员中设置 NDIS_RECEIVE_QUEUE_PARAMETERS_PER_QUEUE_RECEIVE_INDICATION 和 NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED 标志。 其他标志不用于队列分配。
在向微型端口驱动程序发出OID_RECEIVE_FILTER_ALLOCATE_QUEUE的 OID 请求并成功处理该请求后,队列处于暂停状态。
过度配置驱动程序必须使用 NDIS 在后续 OID 请求中提供的队列标识符,例如,修改队列参数或释放队列。 队列标识符也包含在带外(OOB)数据中,其中包含与队列关联的所有 NET_BUFFER_LIST 结构。 驱动程序使用 NET_BUFFER_LIST_RECEIVE_QUEUE_ID 宏检索 NET_BUFFER_LIST 结构中的队列标识符。
当 NDIS 收到用于分配接收队列的 OID 请求时,它会验证队列参数。 在 NDIS 分配必要的资源和队列标识符后,它将 OID 请求提交到基础微型端口驱动程序。 队列标识符对于关联的网络适配器是唯一的。
如果微型端口驱动程序可以成功分配接收队列所需的软件和硬件资源,它将通过返回 NDIS_STATUS_SUCCESS来完成 OID 请求。
微型端口驱动程序必须保留已分配接收队列的队列标识符。 NDIS 使用接收队列的队列标识符对微型端口驱动程序进行后续调用,以便对接收队列设置接收筛选器、更改接收队列参数或释放接收队列。
过度分配驱动程序分配一个或多个接收队列并选择性地设置初始筛选器后,它必须发出 OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE 设置 OID 请求,以通知微型端口驱动程序当前接收队列的分配已完成。
如果没有在该队列上设置筛选器,微型端口驱动程序不得保留接收队列中的任何数据包。 如果队列从未设置任何筛选器或清除所有筛选器,则队列应为空,并且应丢弃任何数据包。 也就是说,数据包不会指示驱动程序堆栈或保留在队列中。
过度分配驱动程序使用 OID_RECEIVE_FILTER_FREE_QUEUE 的 OID 请求来释放分配的队列。
NDIS 或微型端口驱动程序为 OID_RECEIVE_FILTER_ALLOCATE_QUEUE 的 OID 方法请求返回以下状态代码之一。
状态代码 | 描述 |
---|---|
NDIS_STATUS_SUCCESS |
已成功分配队列。 信息缓冲区包含更新 NDIS_RECEIVE_QUEUE_PARAMETERS 结构。 |
NDIS_STATUS_PENDING |
请求正在等待完成。 最终状态代码和结果将传递给调用方 OID 请求完成处理程序。 |
NDIS_STATUS_INVALID_PARAMETER |
提供过度驱动程序的一个或多个参数无效。 |
NDIS_STATUS_INVALID_LENGTH |
信息缓冲区太短。 NDIS 设置 DATA。METHOD_INFORMATION。将 NDIS_OID_REQUEST 结构中的 BytesNeeded成员 到所需的最小缓冲区大小。 |
NDIS_STATUS_NOT_SUPPORTED |
微型端口驱动程序的 NDIS 版本低于版本 6.20。 |
NDIS_STATUS_FAILURE |
由于其他原因,请求失败。 |
版本 |
NDIS 6.20 及更高版本中受支持。 |
页眉 |
Ntddndis.h (包括 Ndis.h) |
NET_BUFFER_LIST_RECEIVE_QUEUE_ID