OID_GEN_TRANSPORT_HEADER_OFFSET

As a set, the OID_GEN_TRANSPORT_HEADER_OFFSET OID indicates the size of additional headers for packets that a particular transport sends and receives.

Version Information

Windows Vista and later versions of Windows

Supported.

NDIS 6.0 and later miniport drivers

Optional.

NDIS 5.1 miniport drivers

Optional.

Windows XP

Supported.

NDIS 5.1 miniport drivers

Optional.

Remarks

A transport informs miniport drivers and other layered drivers of this header size; these drivers can then use this information when processing packets. For example, a driver could use the sublayer header size obtained from the transport to locate the beginning of higher layer information in packets, such as the start of the IP header; the driver could then parse and adjust the fields of the IP protocol header as appropriate. Transports use a TRANSPORT_HEADER_OFFSET structure, defined as follows, to indicate this header size.


typedef struct _TRANSPORT_HEADER_OFFSET {
  USHORT  ProtocolType; 
  USHORT  HeaderOffset; 
} TRANSPORT_HEADER_OFFSET, *PTRANSPORT_HEADER_OFFSET;

The members of this structure contain the following information:

ProtocolType

Specifies the protocol type that sends this OID and that subsequently sends and receives packets using the specified sublayer header size. The protocol is one of the following values:

NDIS_PROTOCOL_ID_DEFAULT

Default protocol

NDIS_PROTOCOL_ID_TCP_IP

TCP/IP protocol

NDIS_PROTOCOL_ID_IPX

NetWare IPX protocol

NDIS_PROTOCOL_ID_NBF

NetBIOS protocol

HeaderOffset

Specifies the size, in bytes, of the sublayer header that precedes the protocol header for packets that the protocol subsequently sends to or receives from the miniport driver or other layered driver. For example, sizeof(Ethernet header) + sizeof(SNAP header).

Typically, transports calculate the header size of packets from information that is retrieved from miniport drivers. To request the maximum total packet size in bytes that a NIC supports, including the header, transports use the OID_GEN_MAXIMUM_TOTAL_SIZE OID. To request the maximum packet size in bytes that a NIC supports, not including a header, transports use the OID_GEN_MAXIMUM_FRAME_SIZE OID. To calculate the maximum header size, transports subtract the maximum frame size from the maximum total size.

If a transport transmits packets that contain sublayer header information, the transport must know the sublayer header size of these packets and must inform underlying miniport drivers and other layered drivers about the size so that the drivers can process the packets. Sending and receiving particular sublayer header information within a packet may be an option that can be set in the registry for a particular protocol. Transports could then obtain information about sublayer headers from the registry and pass the header size down to miniport drivers or other layered drivers.

For example, if a transport handles packets from the Fiber Distributed Data Interface medium, the transport must send a set request to underlying miniport drivers and other layered drivers using OID_GEN_TRANSPORT_HEADER_OFFSET to inform those drivers about the size of the packets' sublayer header. (FDDI is not supported in Windows Vista and later versions of Windows.) These packets from FDDI could contain Logical Link Control (LLC) information. This LLC information could in turn include an LLC header and other headers such as Sub-Network Access Protocol (SNAP). The transport determines from the registry to use LLC/SNAP and passes the header size of the LLC/SNAP segments of packets to miniport drivers.

This OID is optional for miniport drivers and other layered drivers. Because this OID is optional, drivers are not required to respond to requests that transports make using this OID.

Requirements

Header

Ntddndis.h (include Ndis.h)

See also

OID_GEN_MAXIMUM_FRAME_SIZE
OID_GEN_MAXIMUM_TOTAL_SIZE

 

 

Send comments about this topic to Microsoft

Show:
© 2014 Microsoft