// ndis.h
typedef struct _NDIS_PD_QUEUE_PARAMETERS {
NDIS_OBJECT_HEADER Header;
ULONG Flags;
NDIS_PD_QUEUE_TYPE QueueType;
ULONG QueueSize;
ULONG ReceiveDataLength;
GROUP_AFFINITY Affinity;
ULONG TrafficClassId;
ULONG MaximumPartialBufferCount;
NDIS_PD_COUNTER_HANDLE CounterHandle;
} NDIS_PD_QUEUE_PARAMETERS;
View the official Windows Driver Kit DDI referenceNo description available.
This structure is used to hold parameters for a transmit or receive queue when calling any of the queue routines.
HeaderThe NDIS_OBJECT_HEADER structure for the NDIS_PD_CONFIG structure. Set the members of this structure as follows:
FlagsThis member is reserved and must be set to 0 by the provider.
QueueTypeThe type of the queue. For more information see, NDIS_PD_QUEUE_TYPE.
QueueSizeThe maximum amount of PD_BUFFER structures this queue can hold and is always equal to a number of the form (2^k)-1 (63, 127, 255, 511, 1023, etc.). This lends itself to efficient circular index arithmetic.
ReceiveDataLengthThe minimum PD_BUFFER data length.
AffinityThe processor affinity is a hint to the provider for performance optimization. The platform will primarily be processing the queue on processors indicated by this mask. The provider must set this value to the processor core derived from the indirection table configured from OID_GEN_RECEIVE_SCALE_PARAMETERS
TrafficClassIdMaximumPartialBufferCountFor transmit queues, this is the maximum number of partial PD_BUFFER structures that the client is allowed to chain together to form a single L2 packet. This value must be equal to the MaximumTxPartialBufferCount value in the NDIS_PD_CAPABILITIES structure.
For receive queues, this is the maximum number of partial PD_BUFFER structures that the provider is allowed to chain together to form a single large L2 packet with RSC. This must be less than or equal to the MaximumRxPartialBufferCount value in the NDIS_PD_CAPABILITIES structure.
Note The client never posts PD_BUFFER structures with the partial flag to the receive queue. The client is always required to post PD_BUFFER structures with at least MTU-size space, starting from the data start position. The provider performs chaining only in the case of RSC. Some providers may not be able to support RSC chaining, these providers set a value of 1 to the MaximumRxPartialBufferCount member in the NDIS_PD_CAPABILITIES structure.
CounterHandleThis is a handle to the transmit queue counter for transmit queues and a receive queue counter for receive queues.During queue creation, a client can optionally provide a counter handle. In this case and depending on the queue type, the provider must update the counter values as activity occurs on the queue. The client is responsible for closing the counter handle only after the queue is closed.
For queues that are not directly created by the client, such as RSS receive queues obtained using the NdisPDOnRssReceiveQueuesroutine, the provider must always have an associated counter handle with the queue. That is, for a given set of RSS receive queues, the provider must have one dedicated receive queue counter for each receive queue.
This structure must be aligned on an 8-byte boundary.