OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE

NDIS protocol drivers issue object identifier (OID) method requests of OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE to notify the miniport driver that an allocation has completed for the current batch of receive queues.

The InformationBuffer member of the NDIS_OID_REQUEST structure contains a pointer to an NDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_ARRAY structure that is followed by an NDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_PARAMETERS structure for each queue. After a successful return from the OID method request, the InformationBuffer member of the NDIS_OID_REQUEST structure contains a pointer to the same array of structures, and the CompletionStatus member of each NDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_PARAMETERS structure contains the completion status for each queue.

Remarks

The OID method request of OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE is optional for NDIS 6.20 and later miniport drivers. It is mandatory for miniport drivers that support the virtual machine queue (VMQ) interface.

After allocating one or more receive queues and optionally setting the initial filters, the protocol driver must issue the OID method request of OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE in order to notify the miniport driver that the allocation has completed for the current batch of receive queues. This allows the miniport driver to balance the hardware resources among multiple receive queues; if necessary, it can allocate resources such as shared memory for the receive queues.

After a miniport driver receives an OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE request and it has filters that are set on the queue, the queue is in the Running state. In this state, the miniport driver can start indications of packets in the queue by calling NdisMIndicateReceiveNetBufferLists.

Return Status Codes

The miniport driver returns one of the following status codes for the OID method request of OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE.

Status code Description

NDIS_STATUS_SUCCESS

The queue allocation has completed. The information buffer contains the updated NDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_ARRAY structure and parameter structures with the completion status for the queue allocation.

NDIS_STATUS_PENDING

The request is pending completion. The final status code and results will be passed to the OID request completion handler of the caller.

NDIS_STATUS_INVALID_PARAMETER

One or more of the parameters that the overlying driver provided were not valid.

NDIS_STATUS_INVALID_LENGTH

The information buffer was too short. NDIS set the DATA.METHOD_INFORMATION.BytesNeeded member in the NDIS_OID_REQUEST structure to the minimum buffer size that is required.

NDIS_STATUS_NOT_SUPPORTED

The NDIS version of the miniport driver is earlier than version 6.20.

NDIS_STATUS_FAILURE

The request failed for other reasons.

Requirements

Version

Supported in NDIS 6.20 and later.

Header

Ntddndis.h (include Ndis.h)

See also

NdisMIndicateReceiveNetBufferLists

NDIS_OID_REQUEST

NDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_ARRAY

NDIS_RECEIVE_QUEUE_ALLOCATION_COMPLETE_PARAMETERS