NDIS_PM_PROTOCOL_OFFLOAD structure (ntddndis.h)

The NDIS_PM_PROTOCOL_OFFLOAD structure specifies parameters for a low power protocol offload to a network adapter.

Syntax

typedef struct _NDIS_PM_PROTOCOL_OFFLOAD {
  NDIS_OBJECT_HEADER            Header;
  ULONG                         Flags;
  ULONG                         Priority;
  NDIS_PM_PROTOCOL_OFFLOAD_TYPE ProtocolOffloadType;
  NDIS_PM_COUNTED_STRING        FriendlyName;
  ULONG                         ProtocolOffloadId;
  ULONG                         NextProtocolOffloadOffset;
  union {
    struct {
      ULONG Flags;
      UCHAR RemoteIPv4Address[4];
      UCHAR HostIPv4Address[4];
      UCHAR MacAddress[6];
    } IPv4ARPParameters;
    struct {
      ULONG Flags;
      UCHAR RemoteIPv6Address[16];
      UCHAR SolicitedNodeIPv6Address[16];
      UCHAR MacAddress[6];
      UCHAR TargetIPv6Addresses[2][16];
    } IPv6NSParameters;
    struct {
      ULONG     Flags;
      UCHAR     KCK[DOT11_RSN_KCK_LENGTH];
      UCHAR     KEK[DOT11_RSN_KEK_LENGTH];
      ULONGLONG KeyReplayCounter;
    } Dot11RSNRekeyParameters;
    struct {
      ULONG     Flags;
      ULONGLONG KeyReplayCounter;
      ULONG     AuthAlgo;
      ULONG     KCKLength;
      ULONG     KEKLength;
      UCHAR     KCK[DOT11_RSN_MAX_CIPHER_KEY_LENGTH];
      UCHAR     KEK[DOT11_RSN_MAX_CIPHER_KEY_LENGTH];
    } Dot11RSNRekeyParametersV2;
  } ProtocolOffloadParameters;
  _PROTOCOL_OFFLOAD_PARAMETERS  _PROTOCOL_OFFLOAD_PARAMETERS;
} NDIS_PM_PROTOCOL_OFFLOAD, *PNDIS_PM_PROTOCOL_OFFLOAD;

Members

Header

The NDIS_OBJECT_HEADER structure for the NDIS_PM_PROTOCOL_OFFLOAD structure. The driver sets the Type member to NDIS_OBJECT_TYPE_DEFAULT.

To indicate the version of the NDIS_PM_PROTOCOL_OFFLOAD structure, set the Revision member of Header to one of the following values:

NDIS_PM_PROTOCOL_OFFLOAD_REVISION_2

Added the Dot11RSNRekeyParametersV2 structure for NDIS 6.84.

Set the Size member to NDIS_SIZEOF_NDIS_PM_PROTOCOL_OFFLOAD_REVISION_2.

NDIS_PM_PROTOCOL_OFFLOAD_REVISION_1

Original version for NDIS 6.20 and later.

Set the Size member to NDIS_SIZEOF_NDIS_PM_PROTOCOL_OFFLOAD_REVISION_1.

Flags

A ULONG value that contains a bitwise OR of flags. This member is reserved for NDIS.

Priority

A ULONG value that contains the priority of the protocol offload. If an overlying driver adds a higher priority protocol offload when there are no resources that are available for more protocol offloads, NDIS might remove a lower priority protocol offload to free resources. Miniport drivers should ignore this member. Protocol drivers can provide any value within the predefined range. The following values are predefined:

NDIS_PM_PROTOCOL_OFFLOAD_PRIORITY_LOWEST

Specifies the lowest priority protocol offload.

NDIS_PM_PROTOCOL_OFFLOAD_PRIORITY_NORMAL

Specifies a normal priority protocol offload.

NDIS_PM_PROTOCOL_OFFLOAD_PRIORITY_HIGHEST

Specifies the highest priority protocol offload.

ProtocolOffloadType

An NDIS_PM_PROTOCOL_OFFLOAD_TYPE value that contains the type of protocol offload.

FriendlyName

An NDIS_PM_COUNTED_STRING structure that contains the user-readable description of the low power protocol offload.

ProtocolOffloadId

A ULONG value that contains an NDIS-provided value that identifies the offloaded protocol. Before NDIS sends the OID_PM_ADD_PROTOCOL_OFFLOAD OID request down to the underlying NDIS drivers or completes the request to the overlying driver, NDIS sets ProtocolOffloadId to a value that is unique among the protocol offloads on a network adapter.

NextProtocolOffloadOffset

A ULONG value that contains an offset, in bytes. The NextProtocolOffloadOffset member of each NDIS_PM_PROTOCOL_OFFLOAD structure in a list is set to the offset (from the beginning of the OID request InformationBuffer) of the next NDIS_PM_PROTOCOL_OFFLOAD structure in the list. If NextProtocolOffloadOffset is zero, the current structure is the last structure in the list.

ProtocolOffloadParameters

A union that contains the following member structures:

ProtocolOffloadParameters.IPv4ARPParameters

A structure that contains IPv4 ARP parameters. This structure contains the following members:

ProtocolOffloadParameters.IPv4ARPParameters.Flags

A ULONG value that contains a bitwise OR of flags. This member is reserved for NDIS.

ProtocolOffloadParameters.IPv4ARPParameters.RemoteIPv4Address[4]

A UCHAR array that contains an optional IPv4 address. This address represents the Source Protocol Address (SPA) field of the ARP request.

If the incoming ARP request has an SPA value that matches this IPv4 address, the network adapter sends an ARP response when it is in a low power state. If this member is zero, the network adapter should respond to ARP requests from any remote IPv4 address.

For more information about the ARP protocol, see RFC 826.

ProtocolOffloadParameters.IPv4ARPParameters.HostIPv4Address[4]

A UCHAR array that contains the IPv4 address. When it sends the ARP response, the network adapter uses this member for the SPA field of the response.

ProtocolOffloadParameters.IPv4ARPParameters.MacAddress[6]

A UCHAR array that contains a media access control (MAC) address. The network adapter uses this MAC address for the Source Hardware Address (SHA) field of the ARP response packet that it generates.

Note  When it sends an ARP response, the network adapter must always use this MAC address in the ARP payload. However, it should use the current MAC address of the network adapter as the source address in the MAC header.
 

ProtocolOffloadParameters.IPv6NSParameters

A structure that contains IPv6 Neighbor Solicitation (NS) parameters. This structure contains the following members:

ProtocolOffloadParameters.IPv6NSParameters.Flags

A ULONG value that contains a bitwise OR of flags. This member is reserved for NDIS.

ProtocolOffloadParameters.IPv6NSParameters.RemoteIPv6Address[16]

A UCHAR array that contains an optional IPv6 address. This address represents the Source Address field in the IPv6 header of the NS message.

If the incoming NS message has a Source Address value that matches this IPv6 address, the network adapter sends a neighbor advertisement (NA) message when it is in a low power state. If this member is zero, the network adapter should respond to NS messages from any remote IPv6 address.

For more information about IPv6 NS and NA messages, see RFC 4861.

ProtocolOffloadParameters.IPv6NSParameters.SolicitedNodeIPv6Address[16]

A UCHAR array that contains the solicited node IPv6 address. For more information about this type of IPv6 address, see Multicast IPv6 Addresses.

ProtocolOffloadParameters.IPv6NSParameters.MacAddress[6]

A UCHAR array that contains the MAC address. When it sends the NA message, the network adapter uses this array for the target link-layer address (TLLA) field of the NA message.

Note  When it sends an NA message, the network adapter must always use this MAC address in the TLLA field of the NA message. However, it should use the current MAC address of the network adapter as the source address in the MAC header.
 

ProtocolOffloadParameters.IPv6NSParameters.TargetIPv6Addresses[2]

A UCHAR array that contains one or two IPv6 addresses. If it contains only one address, that address is stored in the first element in the array, and the second element is filled with zeros.

Miniport drivers must consume all addresses in the array.

These addresses represent the Target Address field of an NS message. If one of these addresses matches the Target Address field of an incoming NS message, the network adapter sends an NA message in response.

ProtocolOffloadParameters.Dot11RSNRekeyParameters

A structure that contains IEEE 802.11i Robust Security Network (RSN) handshake parameters. This structure contains the following members:

ProtocolOffloadParameters.Dot11RSNRekeyParameters.Flags

A ULONG value that contains a bitwise OR of flags. This member is reserved for NDIS.

ProtocolOffloadParameters.Dot11RSNRekeyParameters.KCK[DOT11_RSN_KCK_LENGTH]

A UCHAR array that contains an IEEE 802.11 key confirmation key (KCK).

ProtocolOffloadParameters.Dot11RSNRekeyParameters.KEK[DOT11_RSN_KEK_LENGTH]

A UCHAR array that contains an IEEE 802.11 key encryption key (KEK).

ProtocolOffloadParameters.Dot11RSNRekeyParameters.KeyReplayCounter

A ULONGLONG value that contains a replay counter.

ProtocolOffloadParameters.Dot11RSNRekeyParametersV2

A structure that contains V2 IEEE 802.11i Robust Security Network (RSN) handshake parameters. Available in NDIS 6.84 and later. This structure contains the following members:

ProtocolOffloadParameters.Dot11RSNRekeyParametersV2.Flags

ProtocolOffloadParameters.Dot11RSNRekeyParametersV2.KeyReplayCounter

ProtocolOffloadParameters.Dot11RSNRekeyParametersV2.AuthAlgo

ProtocolOffloadParameters.Dot11RSNRekeyParametersV2.KCKLength

ProtocolOffloadParameters.Dot11RSNRekeyParametersV2.KEKLength

ProtocolOffloadParameters.Dot11RSNRekeyParametersV2.KCK[DOT11_RSN_MAX_CIPHER_KEY_LENGTH]

ProtocolOffloadParameters.Dot11RSNRekeyParametersV2.KEK[DOT11_RSN_MAX_CIPHER_KEY_LENGTH]

_PROTOCOL_OFFLOAD_PARAMETERS

Remarks

The NDIS_PM_PROTOCOL_OFFLOAD structure is used in the OID_PM_ADD_PROTOCOL_OFFLOAD and OID_PM_PROTOCOL_OFFLOAD_LIST OIDs.

Requirements

Requirement Value
Minimum supported client Supported in NDIS 6.20 and later.
Header ntddndis.h (include Ntddndis.h)

See also

NDIS_OBJECT_HEADER

NDIS_PM_COUNTED_STRING

NDIS_PM_PROTOCOL_OFFLOAD_TYPE

OID_PM_ADD_PROTOCOL_OFFLOAD

OID_PM_PROTOCOL_OFFLOAD_LIST