WS_ENUM_DESCRIPTION 结构 (webservices.h)

WS_ENUM_TYPE 一起使用的类型说明,是必需的。 它提供用于序列化和反序列化枚举值的信息。

语法

typedef struct _WS_ENUM_DESCRIPTION {
  WS_ENUM_VALUE *values;
  ULONG         valueCount;
  ULONG         maxByteCount;
  ULONG         *nameIndices;
} WS_ENUM_DESCRIPTION;

成员

values

指向枚举值及其相应名称的数组。

数组中不得有重复的值或名称。

valueCount

值数组中的项数。

maxByteCount

值数组中最长名称的长度(以 UTF8 字节为单位)。

nameIndices

一个可选数组,它提供的信息可以提高将枚举值映射到名称和返回的性能。 此数组可以为 NULL,在这种情况下,使用 O (n) 查找,这可能足以满足少量枚举值的需求。

如果不是 NULL,则必须满足以下条件:

  • 值数组需要按值按升序排序。
  • nameIndices 数组指向具有 valueCount 项的数组。
  • nameIndices 数组提供值数组中项的索引,就像它们按名称按升序排序一样。 名称应通过对 utf-8 字符串执行字节比较来排序。

注解

以下示例演示了如何初始化枚举说明。 此示例说明如何使用 nameIndices 字段,但此字段可以为 NULL


enum
{
    Red = 10,
    Green = 20,
    Blue = 30,
};

WS_XML_STRING redString = WS_XML_STRING_VALUE("red");
WS_XML_STRING greenString = WS_XML_STRING_VALUE("green");
WS_XML_STRING blueString = WS_XML_STRING_VALUE("blue");

// sorted by ascending numeric value
WS_ENUM_VALUE valueArray[3] =
{
    { Red, &redString },
    { Green, &greenString },
    { Blue, &blueString },
};

// sorted by ascending name
ULONG nameIndices[3] =
{
    2, // "blue"
    1, // "green"
    0, // "red"
};

WS_ENUM_DESCRIPTION enumDescription;
enumDescription.maxByteCount = 5; // "green"
enumDescription.values = valueArray;
enumDescription.valueCount = 3;
enumDescription.nameIndices = nameIndices;

要求

   
最低受支持的客户端 Windows 7 [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 R2 [仅限桌面应用]
标头 webservices.h