2.2.1.1.1 DNS_RPC_TYPEID

The DNS Server Management Protocol RPC methods use a generic and extensible data structure of type DNSSRV_RPC_UNION structure (section 2.2.1.2.6), which is a union of pointers to different data types. A DNS_RPC_TYPEID enumeration value is used to specify what data is being stored in an instance of the DNSSRV_RPC_UNION structure. When combined with a DNSSRV_RPC_UNION structure, the DNS_RPC_TYPEID enumeration allows the DNS RPC interface to communicate many different types of DNS server configuration and data in a single structure.

 typedef enum _DnssrvRpcTypeId
 {
     DNSSRV_TYPEID_ANY = (-1),
     DNSSRV_TYPEID_NULL = 0,
     DNSSRV_TYPEID_DWORD,
     DNSSRV_TYPEID_LPSTR,
     DNSSRV_TYPEID_LPWSTR,
     DNSSRV_TYPEID_IPARRAY,
     DNSSRV_TYPEID_BUFFER,                       //  5
     DNSSRV_TYPEID_SERVER_INFO_W2K,
     DNSSRV_TYPEID_STATS,
     DNSSRV_TYPEID_FORWARDERS_W2K,
     DNSSRV_TYPEID_ZONE_W2K,
     DNSSRV_TYPEID_ZONE_INFO_W2K,                //  10
     DNSSRV_TYPEID_ZONE_SECONDARIES_W2K,
     DNSSRV_TYPEID_ZONE_DATABASE_W2K,
     DNSSRV_TYPEID_ZONE_TYPE_RESET_W2K,
     DNSSRV_TYPEID_ZONE_CREATE_W2K,
     DNSSRV_TYPEID_NAME_AND_PARAM,               //  15
     DNSSRV_TYPEID_ZONE_LIST_W2K,
     DNSSRV_TYPEID_ZONE_RENAME,
     DNSSRV_TYPEID_ZONE_EXPORT,
     DNSSRV_TYPEID_SERVER_INFO_DOTNET,
     DNSSRV_TYPEID_FORWARDERS_DOTNET,            //  20
     DNSSRV_TYPEID_ZONE,
     DNSSRV_TYPEID_ZONE_INFO_DOTNET,
     DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET,
     DNSSRV_TYPEID_ZONE_DATABASE,
     DNSSRV_TYPEID_ZONE_TYPE_RESET_DOTNET,       //  25
     DNSSRV_TYPEID_ZONE_CREATE_DOTNET,
     DNSSRV_TYPEID_ZONE_LIST,
     DNSSRV_TYPEID_DP_ENUM,
     DNSSRV_TYPEID_DP_INFO,
     DNSSRV_TYPEID_DP_LIST,                      //  30
     DNSSRV_TYPEID_ENLIST_DP,
     DNSSRV_TYPEID_ZONE_CHANGE_DP,
     DNSSRV_TYPEID_ENUM_ZONES_FILTER,
     DNSSRV_TYPEID_ADDRARRAY,
     DNSSRV_TYPEID_SERVER_INFO,                  //  35
     DNSSRV_TYPEID_ZONE_INFO,
     DNSSRV_TYPEID_FORWARDERS,
     DNSSRV_TYPEID_ZONE_SECONDARIES,
     DNSSRV_TYPEID_ZONE_TYPE_RESET,
     DNSSRV_TYPEID_ZONE_CREATE,                  //  40
     DNSSRV_TYPEID_IP_VALIDATE,
     DNSSRV_TYPEID_AUTOCONFIGURE,
     DNSSRV_TYPEID_UTF8_STRING_LIST,
     DNSSRV_TYPEID_UNICODE_STRING_LIST,
     DNSSRV_TYPEID_SKD,                          //  45
     DNSSRV_TYPEID_SKD_LIST,
     DNSSRV_TYPEID_SKD_STATE,
     DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR,
     DNSSRV_TYPEID_TRUST_POINT_LIST,
     DNSSRV_TYPEID_TRUST_ANCHOR_LIST,            //  50
     DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS,        
     DNSSRV_TYPEID_ZONE_SCOPE_ENUM,
     DNSSRV_TYPEID_ZONE_STATS,
     DNSSRV_TYPEID_ZONE_SCOPE_CREATE,
     DNSSRV_TYPEID_ZONE_SCOPE_INFO,               //  55
     DNSSRV_TYPEID_SCOPE_ENUM, 
     DNSSRV_TYPEID_CLIENT_SUBNET_RECORD,
     DNSSRV_TYPEID_POLICY,
     DNSSRV_TYPEID_POLICY_NAME,
     DNSSRV_TYPEID_POLICY_ENUM,                   //  60
     DNSSRV_TYPEID_RRL,
     DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE,
     DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM
 }
 DNS_RPC_TYPEID, *PDNS_RPC_TYPEID;

DNSSRV_TYPEID_ANY: Type is invalid.

DNSSRV_TYPEID_NULL: No data is provided.

DNSSRV_TYPEID_DWORD: A DWORD value.

DNSSRV_TYPEID_LPSTR: A pointer to a null-terminated UTF-8 [RFC3629] string.

DNSSRV_TYPEID_LPWSTR: A pointer to a null-terminated Unicode string.

DNSSRV_TYPEID_IPARRAY: A pointer to an IP4_ARRAY. This structure is used to specify a list of IPv4 addresses.

DNSSRV_TYPEID_BUFFER: A pointer to a DNS_RPC_BUFFER (section 2.2.1.2.2). This structure is used to hold a generic buffer of the DNS server information. Interpretation of the buffer depends upon the request.

DNSSRV_TYPEID_SERVER_INFO_W2K: A pointer to a structure of type DNS_RPC_SERVER_INFO_W2K (section 2.2.4.2.2.1). This structure is used to specify general DNS server state and configuration.

DNSSRV_TYPEID_STATS: A pointer to a structure of type DNSSRV_STATS (section 2.2.10.2.2). The structure exposes internal statistics and counters.

DNSSRV_TYPEID_FORWARDERS_W2K: A pointer to a structure of type DNS_RPC_FORWARDERS_W2K (section 2.2.5.2.10.1). This structure specifies the set of DNS servers this DNS server will forward unresolved queries to.

DNSSRV_TYPEID_ZONE_W2K: A pointer to a structure of type DNS_RPC_ZONE_W2K (section 2.2.5.2.1.1). This structure is used to specify basic information about a DNS zone.

DNSSRV_TYPEID_ZONE_INFO_W2K: A pointer to a structure of type DNS_RPC_ZONE_INFO_W2K (section 2.2.5.2.4.1). This structure is used to specify detailed DNS zone information.

DNSSRV_TYPEID_ZONE_SECONDARIES_W2K: A pointer to a structure of type DNS_RPC_ZONE_SECONDARIES_W2K (section 2.2.5.2.5.1). This structure is used to specify information about the secondary servers for a primary DNS zone.

DNSSRV_TYPEID_ZONE_DATABASE_W2K: A pointer to a structure of type DNS_RPC_ZONE_DATABASE_W2K (section 2.2.5.2.6.1). This structure specifies how a DNS zone is stored in persistent storage.

DNSSRV_TYPEID_ZONE_TYPE_RESET_W2K: This value is not used.

DNSSRV_TYPEID_ZONE_CREATE_W2K: A pointer to a structure of type DNS_RPC_ZONE_CREATE_INFO_W2K (section 2.2.5.2.7.1). This structure is used to specify parameters required when creating a new DNS zone.

DNSSRV_TYPEID_NAME_AND_PARAM: A pointer to a structure of type DNS_RPC_NAME_AND_PARAM (section 2.2.1.2.5). This is a general purpose structure used to associate a parameter name with a DWORD value.

DNSSRV_TYPEID_ZONE_LIST_W2K: A pointer to a structure of type DNS_RPC_ZONE_LIST_W2K (section 2.2.5.2.3.1). This structure is used to enumerate zones.

DNSSRV_TYPEID_ZONE_RENAME: This value is not used.

DNSSRV_TYPEID_ZONE_EXPORT: A pointer to a structure of type DNS_RPC_ZONE_EXPORT_INFO (section 2.2.5.2.8). This structure is used to specify how to export a zone to a file.

DNSSRV_TYPEID_SERVER_INFO_DOTNET: A pointer to a structure of type DNS_RPC_SERVER_INFO_DOTNET (section 2.2.4.2.2.2). This structure is used to specify general DNS server state and configuration.

DNSSRV_TYPEID_FORWARDERS_DOTNET: A pointer to a structure of type DNS_RPC_FORWARDERS_DOTNET (section 2.2.5.2.10.2). This structure specifies the set of DNS servers this DNS server will forward unresolved queries to.

DNSSRV_TYPEID_ZONE: A pointer to a structure of type DNS_RPC_ZONE (section 2.2.5.2.1). This structure is used to specify basic information and a DNS zone.

DNSSRV_TYPEID_ZONE_INFO_DOTNET: A pointer to a structure of type DNS_RPC_ZONE_INFO_DOTNET (section 2.2.5.2.4.2). This structure is used to specify detailed information about a DNS zone.

DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET: A pointer to a structure of type DNS_RPC_ZONE_SECONDARIES_DOTNET (section 2.2.5.2.5.2). This structure is used to specify information about the secondary servers for a primary DNS zone.

DNSSRV_TYPEID_ZONE_DATABASE: A pointer to a structure of type DNS_RPC_ZONE_DATABASE (section 2.2.5.2.6). This structure specifies how a DNS zone is stored in persistent storage.

DNSSRV_TYPEID_ZONE_TYPE_RESET_DOTNET: This value is not used.

DNSSRV_TYPEID_ZONE_CREATE_DOTNET: A pointer to a structure of type DNS_RPC_ZONE_CREATE_INFO_DOTNET. This structure is used to specify parameters required when creating a new DNS zone.

DNSSRV_TYPEID_ZONE_LIST: A pointer to a structure of type DNS_RPC_ZONE_LIST (section 2.2.5.2.3). This structure is used to enumerate zones.

DNSSRV_TYPEID_DP_ENUM: A pointer to a structure of type DNS_RPC_DP_ENUM (section 2.2.7.2.3). This structure is used to specify basic information about an application directory partition.

DNSSRV_TYPEID_DP_INFO: A pointer to a structure of type DNS_RPC_DP_INFO (section 2.2.7.2.1). This structure specifies detailed information about a single application directory partition.

DNSSRV_TYPEID_DP_LIST: A pointer to a structure of type DNS_RPC_DP_LIST (section 2.2.7.2.4). This structure is used to enumerate application directory partitions.

DNSSRV_TYPEID_ENLIST_DP: A pointer to a structure of type DNS_RPC_ENLIST_DP (section 2.2.7.2.5). This structure is used to request enlistment changes for an application directory partition.

DNSSRV_TYPEID_ZONE_CHANGE_DP: A pointer to a structure of type DNS_RPC_ZONE_CHANGE_DP (section 2.2.7.2.6). This structure is used to request that a DNS zone be moved from one application directory partition to another.

DNSSRV_TYPEID_ENUM_ZONES_FILTER: A pointer to a structure of type DNS_RPC_ENUM_ZONES_FILTER (section 2.2.5.2.9). This structure is used to filter DNS zones during enumeration.

DNSSRV_TYPEID_ADDRARRAY: A pointer to a structure of type DNS_ADDR_ARRAY (section 2.2.3.2.3). This structure is used to specify a list of IPv4 or IPv6 addresses.

DNSSRV_TYPEID_SERVER_INFO: A pointer to a structure of type DNS_RPC_SERVER_INFO (section 2.2.4.2.2). This structure is used to specify general DNS server state and configuration.

DNSSRV_TYPEID_ZONE_INFO: A pointer to a structure of type DNS_RPC_ZONE_INFO (section 2.2.5.2.4). This structure is used to specify detailed information about a DNS zone.

DNSSRV_TYPEID_FORWARDERS: A pointer to a structure of type DNS_RPC_FORWARDERS (section 2.2.5.2.10). This structure specifies the set of DNS servers this DNS server will forward unresolved queries to.

DNSSRV_TYPEID_ZONE_SECONDARIES: A pointer to a structure of type DNS_RPC_ZONE_SECONDARIES (section 2.2.5.2.5). This structure is used to specify information about the secondary servers for a primary DNS zone.

DNSSRV_TYPEID_ZONE_TYPE_RESET: This value is not used.

DNSSRV_TYPEID_ZONE_CREATE: A pointer to a structure of type DNS_RPC_ZONE_CREATE_INFO (section 2.2.5.2.7). This structure is used to specify parameters required when creating a new DNS zone.

DNSSRV_TYPEID_IP_VALIDATE: A pointer to a structure of type DNS_RPC_IP_VALIDATE (section 2.2.3.2.4). This structure is used to request IP validation and to return the results of IP validation.

DNSSRV_TYPEID_AUTOCONFIGURE: A pointer to a structure of type DNS_RPC_AUTOCONFIGURE (section 2.2.8.2.1). This structure is used to request DNS server autoconfiguration.

DNSSRV_TYPEID_UTF8_STRING_LIST: A pointer to a structure of type DNS_RPC_UTF8_STRING_LIST (section 2.2.1.2.3). This structure is used to represent a list of UTF-8 [RFC3629] strings.

DNSSRV_TYPEID_UNICODE_STRING_LIST: A pointer to a structure of type DNS_RPC_UNICODE_STRING_LIST (section 2.2.1.2.4). This structure is used to represent a list of Unicode strings.

DNSSRV_TYPEID_SKD: A pointer to a structure of type DNS_RPC_SKD (section 2.2.6.2.1). This structure is used to specify detailed signing key descriptor (SKD) information.

DNSSRV_TYPEID_SKD_LIST: A pointer to a structure of type DNS_RPC_SKD_LIST (section 2.2.6.2.2). This structure is used to enumerate signing key descriptors.

DNSSRV_TYPEID_SKD_STATE: A pointer to a structure of type DNS_RPC_SKD_STATE (section 2.2.6.2.3). This structure is used to specify detailed signing key descriptor state information.

DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR: A pointer to a structure of type DNS_RPC_SIGNING_VALIDATION_ERROR (section 2.2.6.2.8). This structure is used to specify signing key descriptor validation error information.

DNSSRV_TYPEID_TRUST_POINT_LIST: A pointer to a structure of type DNS_RPC_TRUST_POINT_LIST (section 2.2.6.2.5). This structure is used to enumerate trust points.

DNSSRV_TYPEID_TRUST_ANCHOR_LIST: A pointer to a structure of type DNS_RPC_TRUST_ANCHOR_LIST (section 2.2.6.2.7). This structure is used to enumerate trust anchors.

DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS: A pointer to a structure of type DNS_RPC_ZONE_DNSSEC_SETTINGS (section 2.2.6.2.9). This structure is used to specify the DNSSEC settings for file-backed zones.

DNSSRV_TYPEID_ZONE_SCOPE_ENUM: A pointer to a structure of type DNS_RPC_ENUM_ZONE_SCOPE_LIST (section 2.2.13.1.1). This structure is used to enumerate zone scopes or cache scopes.

DNSSRV_TYPEID_ZONE_STATS: A pointer to a structure of type DNS_RPC_ZONE_STATS_V1 (section 2.2.12.2.5). This structure is used to enumerate the zone statistics.

DNSSRV_TYPEID_ZONE_SCOPE_CREATE: A pointer to a structure of type DNS_RPC_ZONE_SCOPE_CREATE_INFO_V1 (section 2.2.13.1.2.1). This structure is used to create the zone scope or cache scope.

DNSSRV_TYPEID_ZONE_SCOPE_INFO: A pointer to a structure of type DNS_RPC_ZONE_SCOPE_INFO_V1 (section 2.2.13.1.3.1). This structure is used to get the zone scope or cache scope information.

DNSSRV_TYPEID_SCOPE_ENUM: A pointer to a structure of type DNS_RPC_ENUM_SCOPE_LIST (section 2.2.14.1.1). The structure is used to enumerate the server scopes configured on the DNS server.

DNSSRV_TYPEID_CLIENT_SUBNET_RECORD: A pointer to a structure of type DNS_RPC_CLIENT_SUBNET_RECORD (section 2.2.15.2.1). The structure is used to enumerate the client subnet records configured on the DNS server.

DNSSRV_TYPEID_POLICY: A pointer to a structure of type DNS_RPC_POLICY (section 2.2.15.2.5).

DNSSRV_TYPEID_POLICY_NAME: A pointer to a structure of type DNS_RPC_POLICY_NAME (section 2.2.15.2.6).

DNSSRV_TYPEID_POLICY_ENUM: A pointer to a structure of type DNS_RPC_ENUMERATE_POLICY_LIST (section 2.2.15.2.7). The structure is used to enumerate the DNS policy configured on the DNS server.

DNSSRV_TYPEID_RRL: A pointer to a structure of type DNS_RPC_RRL_PARAMS (section 2.2.16.2.1). This structure is used to configure parameters for Response Rate Limiting (RRL).

DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE:A pointer to a structure of type DNS_RPC_VIRTUALIZATION_INSTANCE (section 2.2.17.1.1).

DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM: A pointer to a structure of type DNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST (section 2.2.17.1.3). This structure is used to enumerate the virtualization instances in the DNS Server.

Clients and servers of the DNS Server Management Protocol SHOULD<5> support all values above.