OID_RECEIVE_FILTER_FREE_QUEUE
NDIS 协议驱动程序发出对象标识符 (OID) OID_RECEIVE_FILTER_FREE_QUEUE集请求来释放接收队列。
NDIS_OID_REQUEST 结构的 InformationBuffer 成员包含指向NDIS_RECEIVE_QUEUE_FREE_PARAMETERS结构的指针,其队列标识符的类型为 NDIS_RECEIVE_QUEUE_ID。
注解
对于 NDIS 6.20 及更高版本的微型端口驱动程序,OID_RECEIVE_FILTER_FREE_QUEUE的 OID 集请求是可选的。 对于支持虚拟机队列接口的微型端口驱动程序,这是必需的。
过度分配的驱动程序发出 OID_RECEIVE_FILTER_ALLOCATE_QUEUE OID 以分配接收队列后,它会发出OID_RECEIVE_FILTER_FREE_QUEUE OID 以释放接收队列。
当 NDIS 请求微型端口驱动程序释放 VMQ 接收队列时,它会执行以下步骤:
网络适配器将停止数据的 DMA 传输,以接收与接收队列关联的缓冲区,之后队列必须进入“DMA 已停止”状态。 网络适配器在收到 OID_RECEIVE_FILTER_CLEAR_FILTER OID 请求以清除接收队列上的最后一个设置筛选器时,可能会停止 DMA 活动。
微型端口驱动程序生成一个NDIS_STATUS_RECEIVE_QUEUE_STATE状态指示,NDIS_RECEIVE_QUEUE_STATE 结构的QueueState 成员设置为 NdisReceiveQueueOperationalStateDmaStopped,以通知 NDIS DMA 传输已停止。
微型端口驱动程序等待所有指示的接收数据包,以便该队列返回到微型端口驱动程序。
微型端口驱动程序通过调用 NdisFreeSharedMemory 释放为网络适配器的接收缓冲区分配的所有共享内存,这些缓冲区与队列相关联。
微型端口驱动程序完成OID_RECEIVE_FILTER_FREE_QUEUE OID 请求以释放接收队列。
微型端口驱动程序调用 NdisFreeSharedMemory 函数以释放队列的共享内存。 如果微型端口驱动程序为非默认队列分配了共享内存,则驱动程序在释放队列时,在OID_RECEIVE_FILTER_FREE_QUEUE OID 的上下文中释放共享内存。 微型端口驱动程序释放他们在 MiniportHaltEx 函数上下文中为默认队列分配的共享内存。
过度分配的驱动程序必须先释放它在队列上设置的所有筛选器,然后才能释放队列。 此外,在调用 NdisCloseAdapterEx 函数以关闭与网络适配器的绑定之前,过度分配的驱动程序必须释放在网络适配器上分配的所有接收队列。 NDIS 在调用微型端口驱动程序的 MiniportHaltEx 函数之前,释放在网络适配器上分配的所有队列。
返回状态代码
微型端口驱动程序的 MiniportOidRequest 函数为此请求返回以下值之一:
术语 | 说明 |
---|---|
NDIS_STATUS_SUCCESS |
微型端口驱动程序成功完成请求。 |
NDIS_STATUS_PENDING |
微型端口驱动程序将以异步方式完成请求。 微型端口驱动程序完成所有处理后,必须通过调用 NdisMOidRequestComplete 函数来接替请求,并传递 status 参数的NDIS_STATUS_SUCCESS。 |
NDIS_STATUS_NOT_ACCEPTED |
正在重置微型端口驱动程序。 |
NDIS_STATUS_REQUEST_ABORTED |
微型端口驱动程序停止处理请求。 例如,NDIS 调用 MiniportResetEx 函数。 |
NDIS 为此请求返回以下状态代码之一:
状态代码 | 说明 |
---|---|
NDIS_STATUS_SUCCESS |
已成功释放请求的队列。 |
NDIS_STATUS_PENDING |
请求正在等待完成。 请求完成后,NDIS 会将最终状态代码和结果传递给调用方 OID 请求完成处理程序。 |
NDIS_STATUS_INVALID_PARAMETER |
队列标识符无效。 |
NDIS_STATUS_INVALID_LENGTH |
信息缓冲区太短。 NDIS 设置数据。METHOD_INFORMATION。NDIS_OID_REQUEST结构中的 BytesNeeded 成员达到所需的最小缓冲区大小。 |
要求
版本 |
在 NDIS 6.20 及更高版本中受支持。 |
标头 |
Ntddndis.h (包括 Ndis.h) |
另请参阅
NDIS_RECEIVE_QUEUE_FREE_PARAMETERS