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.
NDIS_PER_PACKET_INFO_FROM_PACKET returns a pointer to a specific type of per-packet information associated with a packet descriptor.
PVOID NDIS_PER_PACKET_INFO_FROM_PACKET( _Inout_ PNDIS_PACKET Packet, _In_ NDIS_PER_PACKET_INFO InfoType );
- Packet [in, out]
Pointer to a packet descriptor.
- InfoType [in]
Specifies, as one of the following values, the specific type of per-packet information to which this macro returns a pointer:
Specifies checksum information used in offloading checksum tasks from the TCP/IP transport to a miniport driver. When this InfoType value is specified, the macro returns a NDIS_TCP_IP_CHECKSUM_PACKET_INFO structure. This structure contains a union that allows the checksum information to be accessed as a single ULONG value or as bit fields.
Specifies Internet Protocol security (IPsec) information used in offloading IPsec tasks from the TCP/IP transport to a miniport driver. When this InfoType value is specified, the macro returns a pointer to an NDIS_IPSEC_PACKET_INFO structure.
Specifies information used in offloading the segmentation of a large TCP packet from the TCP/IP transport to a miniport driver. When this InfoType is specified, the macro returns a ULONG value (not a pointer to the ULONG value).
Before passing a large TCP packet to a miniport driver for segmentation, the TCP/IP transport writes this value with the maximum segment size (MSS), which is the current maximum transmission unit (MTU). Before completing the send of a large TCP packet that it has segmented into smaller packets, a miniport driver writes this value with the total number of user data bytes that it sent in the packets segmented from the large TCP packet.
This is reserved.
Specifies information used in a DMA operation. When this InfoType is specified, the macro returns a pointer to a SCATTER_GATHER_LIST structure. This structure 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.
Specifies 802.1Q information about a packet. When this InfoType is specified, the macro returns the Value member of an NDIS_PACKET_8021Q_INFO structure. This structure can specify 802.1p priority and VLAN identifier information. 802.1p priority information is used to establish packet priority in shared-media 802 networks. A driver can use NDIS_PER_PACKET_INFO_FROM_PACKET with this InfoType value to either retrieve 802.1Q information from the packet descriptor or insert 802.1Q information into the packet descriptor. For more information, see Packet Support for 802.1Q.
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. If this InfoType value is specified, the macro returns a pointer to an NDIS_PACKET structure. A driver uses NDIS_PER_PACKET_INFO_FROM_PACKET with this InfoType value to either retrieve or insert this original-packet information. Using this method of inserting or retrieving, each driver in a layered stack of NDIS drivers 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.
Specifies a pointer to an NDIS_PACKET structure. This structure is the packet descriptor of the next packet in a linked list of packets. A value of NULL indicates that there is no next packet in the linked list.
NDIS_PER_PACKET_INFO_FROM_PACKET returns a pointer to the per-packet information specified by InfoType, or it returns NULL if there is no such per-packet information for the packet.
A protocol or miniport driver should call this macro when it needs to examine and/or set only a single type of per-packet information--such as checksum information or IPsec information--for a packet. If the driver needs to access more than one type of per-packet information for a packet, it can call NDIS_PER_PACKET_INFO_FROM_PACKET once for each type of data it needs to access. Alternatively, drivers can call the NDIS_PACKET_EXTENSION_FROM_PACKET macro to obtain a pointer to the NDIS_PACKET_EXTENSION structure associated with a given packet descriptor.
Build date: 11/16/2013