Enumerating the Allocated Queues

To get a list of all the receive queues that are allocated on a network adapter, an overlying driver issues an OID_RECEIVE_FILTER_ENUM_QUEUES query OID request. After a successful return from the OID query request, the InformationBuffer member of the NDIS_OID_REQUEST structure contains a pointer to an NDIS_RECEIVE_QUEUE_INFO_ARRAY structure that is followed by an NDIS_RECEIVE_QUEUE_INFO structure for each queue.

NDIS handles the OID_RECEIVE_FILTER_ENUM_QUEUES query OID request for miniport drivers. NDIS obtained the information from an internal cache of the data that it received from the OID_RECEIVE_FILTER_ALLOCATE_QUEUE and OID_RECEIVE_FILTER_QUEUE_PARAMETERS OID requests.

Overlying drivers and user-mode applications can use the OID_RECEIVE_FILTER_ENUM_QUEUES OID query request to enumerate the receive queues on a network adapter.

If a protocol driver issues the request, the request type in the NDIS_OID_REQUEST structure is set to NdisRequestQueryInformation and this OID returns an array of all the receive queues that the protocol driver allocated on the network adapter. If a user-mode application issued the request, the request type in the NDIS_OID_REQUEST is set to NdisRequestQueryStatistics, and this OID returns an array of information for all the receive queues on the miniport adapter.