OID_RECEIVE_FILTER_ALLOCATE_QUEUE
过度分配驱动程序发出对象标识符 (OID) 方法请求OID_RECEIVE_FILTER_ALLOCATE_QUEUE分配具有初始配置参数集的队列。
NDIS_OID_REQUEST 结构的 InformationBuffer 成员包含指向NDIS_RECEIVE_QUEUE_PARAMETERS结构的指针。 从 OID 方法请求成功返回后,NDIS_OID_REQUEST 结构的 InformationBuffer 成员包含指向具有新队列标识符的NDIS_RECEIVE_QUEUE_PARAMETERS结构的指针。
注解
OID_RECEIVE_FILTER_ALLOCATE_QUEUE 的 OID 方法请求对于 NDIS 6.20 及更高版本的微型端口驱动程序是可选的。 对于支持虚拟机队列的微型端口驱动程序, (VMQ) 接口是必需的。
过度分配的驱动程序使用其请求的队列配置初始化 NDIS_RECEIVE_QUEUE_PARAMETERS 结构。 NDIS 在 NDIS_RECEIVE_QUEUE_PARAMETERS 结构的 QueueId 成员中分配队列标识符,并将方法请求传递给微型端口驱动程序。
注意覆盖驱动程序可以在NDIS_RECEIVE_QUEUE_PARAMETERS结构的 Flags 成员中设置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 设置数据。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