SoHAttributeValue 联合

注意

网络访问保护平台从Windows 10开始不可用

SoHAttributeValue 联合在 SoHAttribute 结构中定义类型成员的内容。 SoHAttributeValue 联合的结构由 SoHAttribute 结构的类型成员中指定的 SoHAttributeType 确定。

语法

typedef union tagSoHAttributeValue {
  SystemHealthEntityId     idVal;
  struct tagIpv4Addresses {
    UINT16      count;
    Ipv4Address *addresses;
  } v4AddressesVal;
  struct tagIpv6Addresses {
    UINT16      count;
    Ipv6Address *addresses;
  } v6AddressesVal;
  ResultCodes              codesVal;
  FILETIME                 dateTimeVal;
  struct tagVendorSpecific {
    UINT32 vendorId;
    UINT16 size;
    BYTE   *vendorSpecificData;
  } vendorSpecificVal;
  UINT8                    uint8Val;
  struct tagOctetString {
    UINT16 size;
    BYTE   *data;
  } octetStringVal;
} SoHAttributeValue;

成员

idVal

case (sohAttributeTypeSystemHealthId)

一个唯一 的 SystemHealthEntityId ,其中包含构造此 SoH 数据包的系统运行状况代理 (SHA) 或系统运行状况验证器 (SHV) 的 ID。

v4AddressesVal

case (sohAttributeTypeIpv4FixupServers)

NAP 系统使用的修复服务器的 IPv4 地址。

计数

地址成员在范围 1 到 maxIpv4CountPerSoHAttribute 的 IPv4 地址数。

addresses

包含 IPv4 地址的 Ipv4Address 结构的数组。

v6AddressesVal

case (sohAttributeTypeIpv6FixupServers)

NAP 系统使用的修复服务器的 IPv6 地址。

计数

地址成员中范围 1 到 maxIpv6CountPerSoHAttribute 的 IPv4 地址数。

addresses

包含 IPv4 地址的 Ipv6Address 结构的数组。

codesVal

case (sohAttributeTypeComplianceResultCodes, sohAttributeTypeErrorCodes)

一个 ResultCodes 结构,其中包含应用程序定义的客户端的符合性结果代码或 NAP 错误常量SoH 数据包必须包含此 TLV 或 sohAttributeTypeFailureCategory TLV。

dateTimeVal

case (sohAttributeTypeTimeOfLastUpdate, sohAttributeTypeSoHGenerationTime)

包含上次 SoH 更新的时间或 SoH 生成时间的 FILETIME 结构。

vendorSpecificVal

case (sohAttributeTypeVendorSpecific)

供应商定义的特定于应用程序的数据。

vendorId

定义 SHA/SHV 对 ID 的 4 字节标识符。 前 3 个字节是供应商的 IETF 分配的 SMI 代码,最后一个字节标识组件本身。 实现 SHA 或 SHV 时,请勿在 NAP 供应商常量上使用分配给内部 Microsoft 系统运行状况组件的 ID 值。

大小

供应商数据的大小(以字节为单位),范围为 0 到 (maxSoHAttributeSize - 4) 。

vendorSpecificData

指向按网络字节顺序表示的供应商特定数据的指针。

uint8Val

case (sohAttributeTypeHealthClass,sohAttributeTypeFailureCategory,sohAttributeTypeExtendedIsolationState)

NAP 组件的运行状况类、故障类别或扩展隔离状态,作为 HealthClassValueFailureCategory 值或 IsolationInfoEx 结构。

octetStringVal

default

以下属性的值是八进制字符串:

  • sohAttributeTypeSoftwareVersion
  • sohAttributeTypeClientId
  • sohAttributeTypeProductName
  • sohAttributeTypeHealthClassStatus

为了向前兼容,所有无法识别的属性都以八进制字符串的形式返回。 数据 必须按网络字节顺序排列。

大小

范围 0 到 maxSoHAttributeSize的数据的大小(以字节为单位)。

data

指向八进制字符串值的指针。

实际数据布局

由于 SDK 发布环境的性质,联合在语法块中没有明确表示。 下面是 NapProtocol.h 头文件中的实际语法。

#include <windows.h>

typedef [switch_type(SoHAttributeType)] 
   union tagSoHAttributeValue
   {
      [case(sohAttributeTypeSystemHealthId)]
         SystemHealthEntityId idVal;
   
      [case(sohAttributeTypeIpv4FixupServers)]
         struct tagIpv4Addresses
         {
            [range(1, maxIpv4CountPerSoHAttribute)] 
               UINT16 count;
            [size_is(count)] Ipv4Address* addresses;
         } v4AddressesVal;

      [case(sohAttributeTypeIpv6FixupServers)]
         struct tagIpv6Addresses
         {
            [range(1, maxIpv6CountPerSoHAttribute)]
               UINT16 count;
            [size_is(count)] Ipv6Address* addresses;
         } v6AddressesVal;

      [case(sohAttributeTypeComplianceResultCodes, 
            sohAttributeTypeErrorCodes)]
         ResultCodes codesVal;

      [case(sohAttributeTypeTimeOfLastUpdate, 
            sohAttributeTypeSoHGenerationTime)]
         FILETIME dateTimeVal;

      [case(sohAttributeTypeVendorSpecific)]
         struct tagVendorSpecific
         {
            UINT32 vendorId;
            [range(0, maxSoHAttributeSize - 4)] 
               UINT16 size;
            [size_is(size)] BYTE* vendorSpecificData;
         } vendorSpecificVal;

      [case(sohAttributeTypeHealthClass, 
            sohAttributeTypeFailureCategory,
            sohAttributeTypeExtendedIsolationState)]
         UINT8 uint8Val;

      [default]
         struct tagOctetString
         {
            [range(0, maxSoHAttributeSize)] UINT16 size;
            [size_is(size)] BYTE* data;
         } octetStringVal;

   } SoHAttributeValue;
};

备注

NAP 系统使用这些属性类型:

  • sohAttributeTypeSystemHealthId
  • sohAttributeTypeIpv4FixupServers
  • sohAttributeTypeIpv6FixupServers
  • sohAttributeTypeComplianceResultCodes
  • sohAttributeTypeFailureCategory

SoHAttributeType 的其余部分纯粹用作用于 SHA 和 SHV 的规范性指南。

要求

要求
最低受支持的客户端
Windows Vista [仅限桌面应用]
最低受支持的服务器
Windows Server 2008 [仅限桌面应用]
标头
NapProtocol.h
IDL
NapProtocol.idl

另请参阅

NAP 参考

NAP 结构