Поделиться через


NDIS_PACKET_EXTENSION_FROM_PACKET (Compact 2013)

3/26/2014

This macro returns a pointer to the NDIS_PACKET_EXTENSION structure associated with a packet descriptor.

Syntax

PNDIS_PACKET_EXTENSION NDIS_PACKET_EXTENSION_FROM_PACKET(
  PNDIS_PACKET _P
);

Parameters

  • _P
    Points to a packet descriptor.

Return Value

The return value is a pointer to the NDIS_PACKET_EXTENSION structure associated with the given packet descriptor. The return value is NULL if there is no per-packet information for the packet.

Remarks

The NDIS_PACKET_EXTENSION structure contains an array of PVOID, each of which either points to or contains a specific type of per-packet information. After obtaining the pointer to the NDIS_PACKET_EXTENSION structure, the driver can use the appropriate array index to access a particular type of per-packet information.

A protocol or miniport driver should call this macro when it has to read and write more than one type of per-packet information associated with a packet descriptor. If the driver has to access only one type of per-packet information, it should call the NDIS_PER_PACKET_INFO_FROM_PACKET macro.

After obtaining the pointer to the NDIS_PACKET_EXTENSION structure returned by NDIS_PACKET_EXTENSION_FROM_PACKET, a driver can use array indexes to access a particular type of per-packet information.

The following table shows the possible array indexes a driver can use.

Array Index

Description

TcpIpChecksumPacketInfo

Indexes a pointer to an NDIS_TCP_IP_CHECKSUM_PACKET_INFO structure.

IpSecPacketInfo

Not supported in Windows Embedded Compact

TcpLargeSendPacketInfo

Indexes a pointer that contains a ULONG value. Before passing a large TCP packet to a miniport for segmentation, the TCP/IP transport writes this value with the maximum segment size (MSS). This 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 writes this value with the total number of user data bytes that it sent in the packets segmented from the large TCP packet.

ClassificationHandlePacketInfo

This is reserved

ScatterGatherListPacketInfo

Not supported in Windows Embedded Compact

Ieee8021pPriority

Indexes a UINT, which specifies 802.1p priority information that is used to establish packet priority in shared-media 802 networks. The bits that are set to one in this UINT specify an 802.1p priority value.

Ee483121.note(en-us,WinEmbedded.80).gifNote:
Windows Embedded Compact does not support 802.1p packet prioritization.

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.

The NDIS_PACKET_EXTENSION_FROM_PACKET macro is defined as follows:

#define NDIS_PACKET_EXTENSION_FROM_PACKET(_P)  ((PNDIS_PACKET_EXTENSION)((PUCHAR)(_P) + (_P)->Private.NdisPacketOobOffset + sizeof(NDIS_PACKET_OOB_DATA)))

Requirements

Header

ndis.h

See Also

Reference

NDIS 5.x Legacy Network Driver Macros
NDIS_PACKET
NDIS_PER_PACKET_INFO_FROM_PACKET
NDIS_PACKET_EXTENSION
NDIS_PACKET_OOB_DATA
NDIS_TCP_IP_CHECKSUM_PACKET_INFO