NDIS_PM_PROTOCOL_OFFLOAD 结构 (ntddndis.h)

NDIS_PM_PROTOCOL_OFFLOAD 结构指定用于将低功耗协议卸载到网络适配器的参数。

语法

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;

成员

Header

NDIS_PM_PROTOCOL_OFFLOAD 结构的NDIS_OBJECT_HEADER结构。 驱动程序将 Type 成员设置为 NDIS_OBJECT_TYPE_DEFAULT。

若要指示NDIS_PM_PROTOCOL_OFFLOAD结构的版本,请将 HeaderRevision 成员设置为以下值之一:

NDIS_PM_PROTOCOL_OFFLOAD_REVISION_2

为 NDIS 6.84 添加了 Dot11RSNRekeyParametersV2 结构。

Size 成员设置为 NDIS_SIZEOF_NDIS_PM_PROTOCOL_OFFLOAD_REVISION_2。

NDIS_PM_PROTOCOL_OFFLOAD_REVISION_1

NDIS 6.20 及更高版本的原始版本。

Size 成员设置为 NDIS_SIZEOF_NDIS_PM_PROTOCOL_OFFLOAD_REVISION_1。

Flags

包含标志的按位 OR 的 ULONG 值。 此成员是为 NDIS 保留的。

Priority

包含协议卸载优先级的 ULONG 值。 如果在没有可用于更多协议卸载的资源时,过度部署的驱动程序添加了更高优先级的协议卸载,则 NDIS 可能会删除优先级较低的协议卸载,以释放资源。 微型端口驱动程序应忽略此成员。 协议驱动程序可以提供预定义范围内的任何值。 以下值是预定义的:

NDIS_PM_PROTOCOL_OFFLOAD_PRIORITY_LOWEST

指定最低优先级协议卸载。

NDIS_PM_PROTOCOL_OFFLOAD_PRIORITY_NORMAL

指定正常优先级协议卸载。

NDIS_PM_PROTOCOL_OFFLOAD_PRIORITY_HIGHEST

指定优先级最高的协议卸载。

ProtocolOffloadType

一个 NDIS_PM_PROTOCOL_OFFLOAD_TYPE 包含协议卸载类型的值。

FriendlyName

一个NDIS_PM_COUNTED_STRING结构,其中包含低功率协议卸载的用户可读说明。

ProtocolOffloadId

一个 ULONG 值,该值包含标识卸载协议的 NDIS 提供的值。 在 NDIS 将 OID_PM_ADD_PROTOCOL_OFFLOAD OID 请求向下发送到基础 NDIS 驱动程序或完成对超载驱动程序的请求之前,NDIS 会将 ProtocolOffloadId 设置为在网络适配器上的协议卸载中唯一的值。

NextProtocolOffloadOffset

包含偏移量的 ULONG 值(以字节为单位)。 列表中每个NDIS_PM_PROTOCOL_OFFLOAD结构的 NextProtocolOffloadOffset 成员设置为与列表中下一个 NDIS_PM_PROTOCOL_OFFLOAD 结构的 OID 请求 InformationBuffer) 开头 的偏移量 ( 。 如果 NextProtocolOffloadOffset 为零,则当前结构是列表中的最后一个结构。

ProtocolOffloadParameters

包含以下成员结构的联合:

ProtocolOffloadParameters.IPv4ARPParameters

包含 IPv4 ARP 参数的结构。 此结构包含以下成员:

ProtocolOffloadParameters.IPv4ARPParameters.Flags

包含标志的按位 ORULONG 值。 此成员是为 NDIS 保留的。

ProtocolOffloadParameters.IPv4ARPParameters.RemoteIPv4Address[4]

包含可选 IPv4 地址的 UCHAR 数组。 此地址表示 ARP 请求 (SPA) 字段的源协议地址。

如果传入的 ARP 请求具有与此 IPv4 地址匹配的 SPA 值,则网络适配器在处于低功耗状态时发送 ARP 响应。 如果此成员为零,则网络适配器应响应来自任何远程 IPv4 地址的 ARP 请求。

有关 ARP 协议的详细信息,请参阅 RFC 826。

ProtocolOffloadParameters.IPv4ARPParameters.HostIPv4Address[4]

包含 IPv4 地址的 UCHAR 数组。 发送 ARP 响应时,网络适配器将此成员用于响应的 SPA 字段。

ProtocolOffloadParameters.IPv4ARPParameters.MacAddress[6]

包含 MAC) 地址 (媒体访问控制的 UCHAR 数组。 网络适配器将此 MAC 地址用于生成的 ARP 响应数据包的“源硬件地址 (SHA) 字段。

注意 发送 ARP 响应时,网络适配器必须始终在 ARP 有效负载中使用此 MAC 地址。 但是,它应使用网络适配器的当前 MAC 地址作为 MAC 标头中的源地址。
 

ProtocolOffloadParameters.IPv6NSParameters

包含 IPv6 邻居请求 (NS) 参数的结构。 此结构包含以下成员:

ProtocolOffloadParameters.IPv6NSParameters.Flags

包含标志的按位 OR 的 ULONG 值。 此成员是为 NDIS 保留的。

ProtocolOffloadParameters.IPv6NSParameters.RemoteIPv6Address[16]

包含可选 IPv6 地址的 UCHAR 数组。 此地址表示 NS 消息的 IPv6 标头中的“源地址”字段。

如果传入的 NS 消息具有与此 IPv6 地址匹配的“源地址”值,则网络适配器在处于低功耗状态时 (NA) 消息发送邻居播发。 如果此成员为零,则网络适配器应响应来自任何远程 IPv6 地址的 NS 消息。

有关 IPv6 NS 和 NA 消息的详细信息,请参阅 RFC 4861

ProtocolOffloadParameters.IPv6NSParameters.SolicitedNodeIPv6Address[16]

包含请求的节点 IPv6 地址的 UCHAR 数组。 有关此类 IPv6 地址的详细信息,请参阅多播 IPv6 地址。

ProtocolOffloadParameters.IPv6NSParameters.MacAddress[6]

包含 MAC 地址的 UCHAR 数组。 发送 NA 消息时,网络适配器将此数组用于目标链接层地址 (TLLA) NA 消息字段。

注意 发送 NA 消息时,网络适配器必须始终在 NA 消息的 TLLA 字段中使用此 MAC 地址。 但是,它应使用网络适配器的当前 MAC 地址作为 MAC 标头中的源地址。
 

ProtocolOffloadParameters.IPv6NSParameters.TargetIPv6Addresses[2]

包含一个或两个 IPv6 地址的 UCHAR 数组。 如果它只包含一个地址,该地址将存储在数组的第一个元素中,第二个元素用零填充。

微型端口驱动程序必须使用数组中的所有地址。

这些地址表示 NS 邮件的“目标地址”字段。 如果其中一个地址与传入 NS 消息的“目标地址”字段匹配,则网络适配器将发送 NA 消息作为响应。

ProtocolOffloadParameters.Dot11RSNRekeyParameters

包含 IEEE 802.11i 可靠安全网络 (RSN) 握手参数的结构。 此结构包含以下成员:

ProtocolOffloadParameters.Dot11RSNRekeyParameters.Flags

包含标志的按位 OR 的 ULONG 值。 此成员是为 NDIS 保留的。

ProtocolOffloadParameters.Dot11RSNRekeyParameters.KCK[DOT11_RSN_KCK_LENGTH]

包含 IEEE 802.11 密钥确认密钥的 UCHAR 数组, (KCK) 。

ProtocolOffloadParameters.Dot11RSNRekeyParameters.KEK[DOT11_RSN_KEK_LENGTH]

包含 IEEE 802.11 密钥加密密钥的 UCHAR 数组, (KEK) 。

ProtocolOffloadParameters.Dot11RSNRekeyParameters.KeyReplayCounter

包含重播计数器的 ULONGLONG 值。

ProtocolOffloadParameters.Dot11RSNRekeyParametersV2

包含 V2 IEEE 802.11i 可靠安全网络 (RSN) 握手参数的结构。 在 NDIS 6.84 及更高版本中可用。 此结构包含以下成员:

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

注解

NDIS_PM_PROTOCOL_OFFLOAD结构用于 OID_PM_ADD_PROTOCOL_OFFLOAD OID_PM_PROTOCOL_OFFLOAD_LIST Oid。

要求

要求
最低受支持的客户端 在 NDIS 6.20 及更高版本中受支持。
标头 ntddndis.h (包括 Ntddndis.h)

另请参阅

NDIS_OBJECT_HEADER

NDIS_PM_COUNTED_STRING

NDIS_PM_PROTOCOL_OFFLOAD_TYPE

OID_PM_ADD_PROTOCOL_OFFLOAD

OID_PM_PROTOCOL_OFFLOAD_LIST