NDIS_PACKET_EXTENSION structure
Note NDIS 5. x has been deprecated and is superseded by NDIS 6. x. For new NDIS driver development, see Network Drivers Starting with Windows Vista. For information about porting NDIS 5. x drivers to NDIS 6. x, see Porting NDIS 5.x Drivers to NDIS 6.0.
The NDIS_PACKET_EXTENSION structure contains an array of pointers, each of which points to or contains per-packet (out-of-band) information associated with a packet descriptor.
Syntax
typedef struct _NDIS_PACKET_EXTENSION {
PVOID NdisPacketInfo[MaxPerPacketInfo];
} NDIS_PACKET_EXTENSION, *PNDIS_PACKET_EXTENSION;
Members
NdisPacketInfo
An array of pointers, each of which points to or contains per-packet information specific to a particular task. The index values for the array are defined as follows:
TcpIpCheckSumPacketInfo
Indexes an NDIS_TCP_IP_CHECKSUM_PACKET_INFO structure (not a pointer to the structure). This structure specifies per-packet information for checksum operations offloaded from the TCP/IP transport to a NIC.
IpSecPacketInfo
Indexes a pointer that points to an NDIS_IPSEC_PACKET_INFO structure. This structure specifies per-packet information for Internet Protocol security (IPsec) operations offloaded from the TCP/IP transport to a NIC.
TcpLargeSendPacketInfo
Indexes a ULONG value (not a pointer to the ULONG value). Before passing a large TCP packet to a NIC for segmentation, the TCP/IP transport sets this value to the maximum segment size (MSS), which is equivalent to the current maximum transmission unit (MTU). The MTU is the maximum number of user data bytes that can be included in a packet. The miniport driver uses the MSS value to segment the large TCP packet into shorter packets. Before completing the send operation (for example, with NdisMSendComplete or NdisMCoSendComplete), the miniport driver writes the ULONG value with the total number of user data bytes sent in all packets derived from the large TCP packet.
ClassificationHandlePacketInfo
This is reserved.
HeaderIndexInfo
To be documented later.
ScatterGatherListPacketInfo
Indexes a pointer to a SCATTER_GATHER_LIST structure, which specifies the mapped logical address ranges of buffers containing DMA data for a packet. A miniport driver that reserves system resources for DMA operations by calling NdisMInitializeScatterGatherDma supplies the obtained logical address ranges to its NIC so that the NIC can perform a DMA transfer.
Ieee8021QInfo
Indexes the Value member of an NDIS_PACKET_8021Q_INFO structure, which specifies 802.1p priority and VLAN identifier information. 802.1p priority information is used to establish packet priority in shared-media 802 networks. VLAN identifier information identifies the VLAN to which a packet belongs.
For more information, see 802.1Q Packet Information.
OriginalPacketInfo
Indexes a pointer to a NDIS_PACKET structure. This structure specifies a packet descriptor that contains original information that was previously received over the network and indicated up by the lowest-level driver in a stack of NDIS drivers. Each driver in the layered stack can access the out-of-band (OOB) data block that is associated with the packet that is received from the network without requiring that the packet be copied to each layer.
NdisInternalExtension1
To be documented later.
NdisInternalExtension2
To be documented later.
Remarks
Every packet descriptor allocated with NdisAllocatePacket has an associated NDIS_PACKET_EXTENSION structure. This structure contains an array of pointers (PVOIDs), each of which points to or contains a particular type of per-packet information associated with a packet descriptor. Per-packet information is out-of-band (OOB) data in addition to that specified by the NDIS_PACKET_OOB_DATA block. The NDIS_PACKET_EXTENSION structure thus extends the OOB data associated with a packet descriptor.
To access per-packet information, drivers should use the NDIS_PER_PACKET_INFO_FROM_PACKET macro, which returns a pointer to the specified type of per-packet information. A driver can call this macro once for each type of per-packet information that it needs to access.
Drivers can also use the NDIS_PACKET_EXTENSION_FROM_PACKET macro, which returns a pointer to the NDIS_PACKET_EXTENSION structure. A driver can call this macro if it needs to access more than one type of per-packet information associated with a packet descriptor. After obtaining the pointer to the NDIS_PACKET_EXTENSION structure, the driver can use the appropriate array index to obtain a pointer to a particular type of per-packet information.
Requirements
Header |
Ndis.h (include Ndis.h) |
See also
NdisMInitializeScatterGatherDma
NDIS_PACKET_EXTENSION_FROM_PACKET
NDIS_PER_PACKET_INFO_FROM_PACKET
NDIS_TCP_IP_CHECKSUM_PACKET_INFO