2.2.1.2.6 DNSSRV_RPC_UNION

The DNSSRV_RPC_UNION specifies a collection of all possible messages structures that can be exchanged between a client and server communicating using the DNS Server Management Protocol. This is used by the R_DnssrvOperation2 (section 3.1.4.6), R_DnssrvQuery2 (section 3.1.4.7) and R_DnssrvComplexOperation2 (section 3.1.4.8) method calls. The exact message format inside DNSSRV_RPC_UNION is identified by an accompanying DNS_RPC_TYPEID (section 2.2.1.1.1) value. Clients and servers of the DNS Server Management Protocol SHOULD<7> support all members of DNSSRV_RPC_UNION.

 typedef 
 [switch_type(DWORD)] 
 union _DnssrvSrvRpcUnion {
   [case(DNSSRV_TYPEID_NULL)] 
     PBYTE Null;
   [case(DNSSRV_TYPEID_DWORD)] 
     DWORD Dword;
   [case(DNSSRV_TYPEID_LPSTR)] 
     [string] char* String;
   [case(DNSSRV_TYPEID_LPWSTR)] 
     [string] wchar_t* WideString;
   [case(DNSSRV_TYPEID_IPARRAY)] 
     PIP4_ARRAY IpArray;
   [case(DNSSRV_TYPEID_BUFFER)] 
     PDNS_RPC_BUFFER Buffer;
   [case(DNSSRV_TYPEID_SERVER_INFO_W2K)] 
     PDNS_RPC_SERVER_INFO_W2K ServerInfoW2K;
   [case(DNSSRV_TYPEID_STATS)] 
     PDNSSRV_STATS Stats;
   [case(DNSSRV_TYPEID_FORWARDERS_W2K)] 
     PDNS_RPC_FORWARDERS_W2K ForwardersW2K;
   [case(DNSSRV_TYPEID_ZONE_W2K)] 
     PDNS_RPC_ZONE_W2K ZoneW2K;
   [case(DNSSRV_TYPEID_ZONE_INFO_W2K)] 
     PDNS_RPC_ZONE_INFO_W2K ZoneInfoW2K;
   [case(DNSSRV_TYPEID_ZONE_SECONDARIES_W2K)] 
     PDNS_RPC_ZONE_SECONDARIES_W2K SecondariesW2K;
   [case(DNSSRV_TYPEID_ZONE_DATABASE_W2K)] 
     PDNS_RPC_ZONE_DATABASE_W2K DatabaseW2K;
   [case(DNSSRV_TYPEID_ZONE_CREATE_W2K)] 
     PDNS_RPC_ZONE_CREATE_INFO_W2K ZoneCreateW2K;
   [case(DNSSRV_TYPEID_NAME_AND_PARAM)] 
     PDNS_RPC_NAME_AND_PARAM NameAndParam;
   [case(DNSSRV_TYPEID_ZONE_LIST_W2K)] 
     PDNS_RPC_ZONE_LIST_W2K ZoneListW2K;
   [case(DNSSRV_TYPEID_SERVER_INFO_DOTNET)] 
     PDNS_RPC_SERVER_INFO_DOTNET ServerInfoDotNet;
   [case(DNSSRV_TYPEID_FORWARDERS_DOTNET)] 
     PDNS_RPC_FORWARDERS_DOTNET ForwardersDotNet;
   [case(DNSSRV_TYPEID_ZONE)] 
     PDNS_RPC_ZONE Zone;
   [case(DNSSRV_TYPEID_ZONE_INFO_DOTNET)] 
     PDNS_RPC_ZONE_INFO_DOTNET ZoneInfoDotNet;
   [case(DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET)] 
     PDNS_RPC_ZONE_SECONDARIES_DOTNET SecondariesDotNet;
   [case(DNSSRV_TYPEID_ZONE_DATABASE)] 
     PDNS_RPC_ZONE_DATABASE Database;
   [case(DNSSRV_TYPEID_ZONE_CREATE_DOTNET)] 
     PDNS_RPC_ZONE_CREATE_INFO_DOTNET ZoneCreateDotNet;
   [case(DNSSRV_TYPEID_ZONE_LIST)] 
     PDNS_RPC_ZONE_LIST ZoneList;
   [case(DNSSRV_TYPEID_ZONE_EXPORT)] 
     PDNS_RPC_ZONE_EXPORT_INFO ZoneExport;
   [case(DNSSRV_TYPEID_DP_INFO)] 
     PDNS_RPC_DP_INFO DirectoryPartition;
   [case(DNSSRV_TYPEID_DP_ENUM)] 
     PDNS_RPC_DP_ENUM DirectoryPartitionEnum;
   [case(DNSSRV_TYPEID_DP_LIST)] 
     PDNS_RPC_DP_LIST DirectoryPartitionList;
   [case(DNSSRV_TYPEID_ENLIST_DP)] 
     PDNS_RPC_ENLIST_DP EnlistDirectoryPartition;
   [case(DNSSRV_TYPEID_ZONE_CHANGE_DP)] 
     PDNS_RPC_ZONE_CHANGE_DP ZoneChangeDirectoryPartition;
   [case(DNSSRV_TYPEID_ENUM_ZONES_FILTER)] 
     PDNS_RPC_ENUM_ZONES_FILTER EnumZonesFilter;
   [case(DNSSRV_TYPEID_ADDRARRAY)] 
     PDNS_ADDR_ARRAY AddrArray;
   [case(DNSSRV_TYPEID_SERVER_INFO)] 
     PDNS_RPC_SERVER_INFO ServerInfo;
   [case(DNSSRV_TYPEID_ZONE_CREATE)] 
     PDNS_RPC_ZONE_CREATE_INFO ZoneCreate;
   [case(DNSSRV_TYPEID_FORWARDERS)] 
     PDNS_RPC_FORWARDERS Forwarders;
   [case(DNSSRV_TYPEID_ZONE_SECONDARIES)] 
     PDNS_RPC_ZONE_SECONDARIES Secondaries;
   [case(DNSSRV_TYPEID_IP_VALIDATE)] 
     PDNS_RPC_IP_VALIDATE IpValidate;
   [case(DNSSRV_TYPEID_ZONE_INFO)] 
     PDNS_RPC_ZONE_INFO ZoneInfo;
   [case(DNSSRV_TYPEID_AUTOCONFIGURE)] 
     PDNS_RPC_AUTOCONFIGURE AutoConfigure;
   [case(DNSSRV_TYPEID_UTF8_STRING_LIST)] 
     PDNS_RPC_UTF8_STRING_LIST Utf8StringList;
   [case(DNSSRV_TYPEID_UNICODE_STRING_LIST)] 
     PDNS_RPC_UNICODE_STRING_LIST UnicodeStringList;
   [case(DNSSRV_TYPEID_SKD)] 
     PDNS_RPC_SKD Skd;
   [case(DNSSRV_TYPEID_SKD_LIST)] 
     PDNS_RPC_SKD_LIST SkdList;
   [case(DNSSRV_TYPEID_SKD_STATE)] 
     PDNS_RPC_SKD_STATE SkdState;
   [case(DNSSRV_TYPEID_SIGNING_VALIDATION_ERROR)] 
     PDNS_RPC_SIGNING_VALIDATION_ERROR SigningValidationError;
   [case(DNSSRV_TYPEID_TRUST_POINT_LIST)] 
     PDNS_RPC_TRUST_POINT_LIST TrustPointList;
   [case(DNSSRV_TYPEID_TRUST_ANCHOR_LIST)] 
     PDNS_RPC_TRUST_ANCHOR_LIST TrustAnchorList;
   [case(DNSSRV_TYPEID_ZONE_SIGNING_SETTINGS)] 
     PDNS_RPC_ZONE_DNSSEC_SETTINGS ZoneDnsSecSettings;
   [case(DNSSRV_TYPEID_ZONE_SCOPE_ENUM)] 
     PDNS_RPC_ENUM_ZONE_SCOPE_LIST ZoneScopeList;
   [case(DNSSRV_TYPEID_ZONE_STATS)] 
     PDNS_RPC_ZONE_STATS ZoneStats;
   [case(DNSSRV_TYPEID_ZONE_SCOPE_CREATE)] 
     PDNS_RPC_ZONE_SCOPE_CREATE_INFO ScopeCreate;
   [case(DNSSRV_TYPEID_ZONE_SCOPE_INFO)] 
     PDNS_RPC_ZONE_SCOPE_INFO ScopeInfo;
   [case(DNSSRV_TYPEID_SCOPE_ENUM)] 
     PDNS_RPC_ENUM_SCOPE_LIST ScopeList;
   [case(DNSSRV_TYPEID_CLIENT_SUBNET_RECORD)] 
     PDNS_RPC_CLIENT_SUBNET_RECORD SubnetList;
   [case(DNSSRV_TYPEID_POLICY)] 
     PDNS_RPC_POLICY pPolicy;
   [case(DNSSRV_TYPEID_POLICY_NAME)] 
     PDNS_RPC_POLICY_NAME pPolicyName;
   [case(DNSSRV_TYPEID_POLICY_ENUM)] 
     PDNS_RPC_ENUMERATE_POLICY_LIST pPolicyList;
   [case(DNSSRV_TYPEID_RRL)] 
     PDNS_RPC_RRL_PARAMS pRRLParams;
   [case(DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE)]
     PDNS_RPC_VIRTUALIZATION_INSTANCE      VirtualizationInstance;
   [case(DNSSRV_TYPEID_VIRTUALIZATION_INSTANCE_ENUM)]
     PDNS_RPC_ENUM_VIRTUALIZATION_INSTANCE_LIST VirtualizationInstanceList;
  
 } DNSSRV_RPC_UNION;

Null: No data is provided.

Dword: Data is a DWORD value.

String: A pointer to a null-terminated UTF-8 string or a NULL pointer.

WideString: A pointer to a null-terminated Unicode string or a NULL pointer.

IpArray: An array of IPv4 addresses in IP4_ARRAY (section 2.2.3.2.1) format.

Buffer: A pointer to a DNS_RPC_BUFFER (section 2.2.1.2.2).

ServerInfoW2K: 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 the general DNS server state and configuration.

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

ForwardersW2K: 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.

ZoneW2K: 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.

ZoneInfoW2K: 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.

SecondariesW2K: 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.

DatabaseW2K: 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.

ZoneCreateW2K: 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 the parameters required when creating a new DNS zone.

NameAndParam: 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.

ZoneListW2K: 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.

ServerInfoDotNet: 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 the general DNS server state and configuration.

ForwardersDotNet: 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.

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 about a DNS zone.

ZoneInfoDotNet: 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 DNS zone information.

SecondariesDotNet: 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.

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.

ZoneCreateDotNet: A pointer to a structure of type DNS_RPC_ZONE_CREATE_INFO_DOTNET (section 2.2.5.2.7.2). This structure is used to specify the parameters required when creating a new DNS zone.

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

ZoneExport: 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 a zone is exported to file.

DirectoryPartition: 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.

DirectoryPartitionEnum: 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.

DirectoryPartitionList: A pointer to a structure of type DNS_RPC_DP_LIST (section 2.2.7.2.4). This structure is used to enumerate the Application Directory Partition Table.

EnlistDirectoryPartition: 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.

ZoneChangeDirectoryPartition: 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.

EnumZonesFilter: 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.

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.

ServerInfo: 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.

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

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.

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.

IpValidate: 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.

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

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.

Utf8StringList: 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.

UnicodeStringList: 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.

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.

SkdList: 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.

SkdState: 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.

SigningValidationError: 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.

TrustPointList: 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.

TrustAnchorList: 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.

ZoneDnsSecSettings: A pointer to a structure of type DNS_RPC_ZONE_DNSSEC_SETTINGS (section 2.2.6.2.9). This structure is used to list the DNSSEC settings of a zone.

ZoneScopeList: 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 in a specified zone or cache scopes in a cache zone.

ZoneStats: 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.

ScopeCreate: 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 a zone scope or cache scope.

ScopeInfo: 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 specify detailed DNS zone scope or cache scope information.

ScopeList: A pointer to a structure of type DNS_RPC_ENUM_SCOPE_LIST (section 2.2.14.1.1). This structure is used to retrieve all the server scopes configured on the DNS server.

SubnetList: A pointer to a structure of type DNS_RPC_CLIENT_SUBNET_RECORD (section 2.2.15.2.1). This structure is used to retrieve details of a client subnet record in the DNS server.

pPolicy: A pointer to a structure of type DNS_RPC_POLICY (section 2.2.15.2.5). This structure is used to retrieve details of a DNS Policy in the DNS server.

pPolicyName: A pointer to a structure of type DNS_RPC_POLICY_NAME (section 2.2.15.2.6). This structure is used while enumerating DNS Policies in a DNS server per level.

pPolicyList: A pointer to a structure of type DNS_RPC_ENUMERATE_POLICY_LIST (section 2.2.15.2.7). This structure contains a list of DNS_RPC_POLICY_NAME structures.

pRRLParams: A pointer to a structure of type DNS_RPC_RRL_PARAMS (section 2.2.16.2.1). This structure contains the configuration parameters for Response Rate Limiting (RRL).

VirtualizationInstance: A pointer to a structure of type DNS_RPC_VIRTUALIZATION_INSTANCE (section 2.2.17.1.1). This structure is used to retrieve details of a virtualization instance in the DNS server.

VirtualizationInstanceList: 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 virtualization instances in a DNS server.