3 dnsserver interface definition
4 for a protocol descrition see [MS-DNSP].pdf
7 import "misc.idl", "dnsp.idl";
9 [ uuid("50abc2a4-574d-40b3-9d66-ee4fd5fba076"),
11 pointer_default(unique),
12 endpoint("ncacn_ip_tcp:", "ncacn_np:[\\pipe\\dnsserver]"),
13 helper("../librpc/ndr/ndr_dnsserver.h"),
14 helpstring("DNS Management Server")
18 #define wchar_t uint16
19 #define BOOLEAN boolean8
20 #define BOOL boolean32
26 #define PDWORD uint32 *
29 /* DNS RPC data types */
32 typedef [v1_enum] enum {
33 DNS_RPC_USE_TCPIP = 0x00000001,
34 DNS_RPC_USE_NAMED_PIPE = 0x00000002,
35 DNS_RPC_USE_LPC = 0x00000004,
36 DNS_RPC_USE_ALL_PROTOCOLS = 0xFFFFFFFF
40 typedef [v1_enum] enum {
41 DNS_CLIENT_VERSION_W2K = 0x00000000,
42 DNS_CLIENT_VERSION_DOTNET = 0x00060000,
43 DNS_CLIENT_VERSION_LONGHORN = 0x00070000
45 DNS_RPC_CLIENT_VERSION;
50 [size_is(dwLength)] BYTE Buffer[];
55 [range(0,10000)] DWORD dwCount;
56 [size_is(dwCount),string,charset(UTF8)] char * pszStrings[];
57 } DNS_RPC_UTF8_STRING_LIST;
59 /* Name and parameter value */
62 [string, charset(UTF8)] char * pszNodeName;
64 DNS_RPC_NAME_AND_PARAM;
68 /* DNS Resource Record data types */
71 /* DNS_RECORD_TYPE is defined in dnsp.idl as dns_record_type */
72 /* DNS_RPC_NODE_FLAGS is defined in dnsp.idl as dns_rpc_node_flags */
74 typedef [gensize] struct {
75 [value(strlen(str))] uint8 len;
76 [charset(UTF8)] uint8 str[len];
85 DNS_RPC_NAME dnsNodeName;
95 DNS_RPC_NAME NamePrimaryServer;
96 DNS_RPC_NAME ZoneAdministratorEmail;
102 DNS_RPC_NAME nameExchange;
104 DNS_RPC_RECORD_NAME_PREFERENCE;
110 DNS_RPC_NAME nameTarget;
114 typedef [nodiscriminant,gensize,flag(NDR_NOALIGN)] union {
115 [case(DNS_TYPE_TOMBSTONE)] NTTIME timestamp;
116 [case(DNS_TYPE_A)] [flag(NDR_BIG_ENDIAN)] ipv4address ipv4;
117 [case(DNS_TYPE_NS)] DNS_RPC_NAME name;
118 [case(DNS_TYPE_MD)] DNS_RPC_NAME name;
119 [case(DNS_TYPE_MF)] DNS_RPC_NAME name;
120 [case(DNS_TYPE_CNAME)] DNS_RPC_NAME name;
121 [case(DNS_TYPE_SOA)] DNS_RPC_RECORD_SOA soa;
122 [case(DNS_TYPE_MB)] DNS_RPC_NAME name;
123 [case(DNS_TYPE_MG)] DNS_RPC_NAME name;
124 [case(DNS_TYPE_MR)] DNS_RPC_NAME name;
125 [case(DNS_TYPE_PTR)] DNS_RPC_NAME ptr;
126 [case(DNS_TYPE_HINFO)] DNS_RPC_NAME hinfo;
127 [case(DNS_TYPE_MX)] DNS_RPC_RECORD_NAME_PREFERENCE mx;
128 [case(DNS_TYPE_TXT)] DNS_RPC_NAME name;
129 [case(DNS_TYPE_AAAA)] ipv6address ipv6;
130 [case(DNS_TYPE_SRV)] DNS_RPC_RECORD_SRV srv;
131 [case(DNS_TYPE_DNAME)] DNS_RPC_NAME name;
135 typedef [public] struct {
136 [value(ndr_size_DNS_RPC_DATA(&data,wType,0))] uint16 wDataLength;
137 dns_record_type wType;
143 [subcontext(0),subcontext_size(wDataLength),switch_is(wType)] DNS_RPC_DATA data;
148 [value(ndr_size_DNS_RPC_DATA(&rec.data,rec.wType,0))] uint3264 wContextLength;
155 /* DNS Address Information data types */
158 typedef [v1_enum] enum {
159 DNS_IPVAL_DNS_SERVERS = 0x00,
160 DNS_IPVAL_DNS_ROOTHINTS = 0x01,
161 DNS_IPVAL_DNS_FORWARDERS = 0x02,
162 DNS_IPVAL_DNS_ZONE_MASTERS = 0x03,
163 DNS_IPVAL_DNS_DELEGATIONS = 0x04
167 typedef [v1_enum] enum {
168 ERROR_SUCCESS = 0x00,
169 DNS_IPVAL_INVALID_ADDR = 0x01,
170 DNS_IPVAL_UNREACHABLE = 0x02,
171 DNS_IPVAL_NO_RESPONSE = 0x03,
172 DNS_IPVAL_NOT_AUTH_FOR_ZONE = 0x04,
173 DNS_IPVAL_UNKNOWN_ERROR = 0xFF,
174 DNS_IPVAL_NO_TCP = 0x80000000
176 DNS_IP_VALIDATE_RETURN_FLAGS;
180 [size_is( AddrCount )] DWORD AddrArray[];
182 #define PIP4_ARRAY IP4_ARRAY*
186 DWORD DnsAddrUserDword[8];
199 [size_is( AddrCount )] DNS_ADDR AddrArray[];
201 #define PDNS_ADDR_ARRAY DNS_ADDR_ARRAY*
204 DWORD dwRpcStructureVersion;
208 [string, charset(UTF8)] char * pszContextName;
209 PDNS_ADDR_ARRAY aipValidateAddrs;
215 /* DNS Server data types */
218 typedef [enum8bit] enum {
219 DNS_BOOT_METHOD_UNINITIALIZED = 0x00,
220 DNS_BOOT_METHOD_FILE = 0x01,
221 DNS_BOOT_METHOD_REGISTRY = 0x02,
222 DNS_BOOT_METHOD_DIRECTORY = 0x03
226 typedef [v1_enum] enum {
227 DNS_ALLOW_RFC_NAMES_ONLY = 0x00,
228 DNS_ALLOW_NONRFC_NAMES = 0x01,
229 DNS_ALLOW_MULTIBYTE_NAMES = 0x02,
230 DNS_ALLOW_ALL_NAMES = 0x03
236 /* basic configuration flags */
239 DNS_BOOT_METHOD fBootMethod;
240 BOOLEAN fAdminConfigured;
241 BOOLEAN fAllowUpdate;
242 BOOLEAN fDsAvailable;
244 /* pointer section */
246 [string, charset(UTF8)] char * pszServerName;
250 [string, charset(UTF16)] wchar_t * pszDsContainer;
254 PIP4_ARRAY aipServerAddrs;
255 PIP4_ARRAY aipListenAddrs;
259 PIP4_ARRAY aipForwarders;
261 /* future extensions */
276 /* configuration DWORDs */
278 DWORD dwForwardTimeout;
280 DNS_NAME_CHECK_FLAG dwNameCheckFlag;
281 DWORD cAddressAnswerLimit;
282 DWORD dwRecursionRetry;
283 DWORD dwRecursionTimeout;
285 DWORD dwDsPollingInterval;
287 /* aging / scavenging */
289 DWORD dwScavengingInterval;
290 DWORD dwDefaultRefreshInterval;
291 DWORD dwDefaultNoRefreshInterval;
293 DWORD dwReserveArray[10];
297 /* configuration flags */
299 BOOLEAN fAutoReverseZones;
300 BOOLEAN fAutoCacheUpdate;
302 /* recursion control */
304 BOOLEAN fRecurseAfterForwarding;
305 BOOLEAN fForwardDelegations;
306 BOOLEAN fNoRecursion;
307 BOOLEAN fSecureResponses;
312 BOOLEAN fLocalNetPriority;
314 /* BIND compatibility and mimicking */
316 BOOLEAN fBindSecondaries;
317 BOOLEAN fWriteAuthorityNs;
319 /* Bells and whistles */
321 BOOLEAN fStrictFileParsing;
322 BOOLEAN fLooseWildcarding;
324 /* aging / scavenging */
326 BOOLEAN fDefaultAgingState;
327 BOOLEAN fReserveArray[15];
329 DNS_RPC_SERVER_INFO_W2K;
332 [string, charset(UTF8)] uint8 *extension;
335 typedef [public] struct {
336 DWORD dwRpcStructureVersion;
339 /* basic configuration flags */
342 DNS_BOOT_METHOD fBootMethod;
343 BOOLEAN fAdminConfigured;
344 BOOLEAN fAllowUpdate;
345 BOOLEAN fDsAvailable;
347 /* pointer section */
349 [string, charset(UTF8)] char * pszServerName;
353 [string, charset(UTF16)] wchar_t * pszDsContainer;
357 PIP4_ARRAY aipServerAddrs;
358 PIP4_ARRAY aipListenAddrs;
362 PIP4_ARRAY aipForwarders;
366 PIP4_ARRAY aipLogFilter;
367 [string, charset(UTF16)] wchar_t * pwszLogFilePath;
369 /* Server domain/forest */
371 [string, charset(UTF8)] char * pszDomainName; /* UTF-8 FQDN */
372 [string, charset(UTF8)] char * pszForestName; /* UTF-8 FQDN */
374 /* Built-in directory partitions */
376 [string, charset(UTF8)] char * pszDomainDirectoryPartition; /* UTF-8 FQDN */
377 [string, charset(UTF8)] char * pszForestDirectoryPartition; /* UTF-8 FQDN */
379 /* future extensions */
380 DNS_EXTENSION pExtensions[6];
389 /* configuration DWORDs */
391 DWORD dwForwardTimeout;
393 DNS_NAME_CHECK_FLAG dwNameCheckFlag;
394 DWORD cAddressAnswerLimit;
395 DWORD dwRecursionRetry;
396 DWORD dwRecursionTimeout;
398 DWORD dwDsPollingInterval;
399 DWORD dwLocalNetPriorityNetMask;
401 /* aging and scavenging */
403 DWORD dwScavengingInterval;
404 DWORD dwDefaultRefreshInterval;
405 DWORD dwDefaultNoRefreshInterval;
406 DWORD dwLastScavengeTime;
410 DWORD dwEventLogLevel;
411 DWORD dwLogFileMaxSize;
413 /* Active Directory information */
415 DWORD dwDsForestVersion;
416 DWORD dwDsDomainVersion;
417 DWORD dwDsDsaVersion;
419 DWORD dwReserveArray[ 4 ];
423 /* configuration flags */
425 BOOLEAN fAutoReverseZones;
426 BOOLEAN fAutoCacheUpdate;
428 /* recursion control */
430 BOOLEAN fRecurseAfterForwarding;
431 BOOLEAN fForwardDelegations;
432 BOOLEAN fNoRecursion;
433 BOOLEAN fSecureResponses;
438 BOOLEAN fLocalNetPriority;
440 /* BIND compatibility and mimicking */
442 BOOLEAN fBindSecondaries;
443 BOOLEAN fWriteAuthorityNs;
445 /* Bells and whistles */
447 BOOLEAN fStrictFileParsing;
448 BOOLEAN fLooseWildcarding;
450 /* aging \ scavenging */
452 BOOLEAN fDefaultAgingState;
454 BOOLEAN fReserveArray[ 15 ];
456 DNS_RPC_SERVER_INFO_DOTNET;
458 typedef [public] struct {
459 DWORD dwRpcStructureVersion;
462 /* basic configuration flags */
465 DNS_BOOT_METHOD fBootMethod;
466 BOOLEAN fAdminConfigured;
467 BOOLEAN fAllowUpdate;
468 BOOLEAN fDsAvailable;
470 /* pointer section */
472 [string, charset(UTF8)] char * pszServerName;
476 [string, charset(UTF16)] wchar_t * pszDsContainer;
480 PDNS_ADDR_ARRAY aipServerAddrs;
481 PDNS_ADDR_ARRAY aipListenAddrs;
485 PDNS_ADDR_ARRAY aipForwarders;
489 PDNS_ADDR_ARRAY aipLogFilter;
490 [string, charset(UTF16)] wchar_t * pwszLogFilePath;
492 /* Server domain/forest */
494 [string, charset(UTF8)] char * pszDomainName; /* UTF-8 FQDN */
495 [string, charset(UTF8)] char * pszForestName; /* UTF-8 FQDN */
497 /* Built-in directory partitions */
499 [string, charset(UTF8)] char * pszDomainDirectoryPartition; /* UTF-8 FQDN */
500 [string, charset(UTF8)] char * pszForestDirectoryPartition; /* UTF-8 FQDN */
502 /* future extensions */
503 DNS_EXTENSION pExtensions[6];
512 /* configuration DWORDs */
514 DWORD dwForwardTimeout;
516 DNS_NAME_CHECK_FLAG dwNameCheckFlag;
517 DWORD cAddressAnswerLimit;
518 DWORD dwRecursionRetry;
519 DWORD dwRecursionTimeout;
521 DWORD dwDsPollingInterval;
522 DWORD dwLocalNetPriorityNetMask;
524 /* aging and scavenging */
526 DWORD dwScavengingInterval;
527 DWORD dwDefaultRefreshInterval;
528 DWORD dwDefaultNoRefreshInterval;
529 DWORD dwLastScavengeTime;
533 DWORD dwEventLogLevel;
534 DWORD dwLogFileMaxSize;
536 /* Active Directory information */
538 DWORD dwDsForestVersion;
539 DWORD dwDsDomainVersion;
540 DWORD dwDsDsaVersion;
543 DWORD dwReserveArray[ 3 ];
547 /* configuration flags */
549 BOOLEAN fAutoReverseZones;
550 BOOLEAN fAutoCacheUpdate;
552 /* recursion control */
554 BOOLEAN fRecurseAfterForwarding;
555 BOOLEAN fForwardDelegations;
556 BOOLEAN fNoRecursion;
557 BOOLEAN fSecureResponses;
562 BOOLEAN fLocalNetPriority;
564 /* BIND compatibility and mimicking */
566 BOOLEAN fBindSecondaries;
567 BOOLEAN fWriteAuthorityNs;
569 /* Bells and whistles */
571 BOOLEAN fStrictFileParsing;
572 BOOLEAN fLooseWildcarding;
574 /* aging \ scavenging */
576 BOOLEAN fDefaultAgingState;
578 BOOLEAN fReserveArray[ 15 ];
580 DNS_RPC_SERVER_INFO_LONGHORN;
581 #define DNS_RPC_SERVER_INFO DNS_RPC_SERVER_INFO_LONGHORN
585 /* DNS Application directory partition data types */
588 typedef [bitmap32bit] bitmap {
589 DNS_DP_AUTOCREATED = 0x00000001,
590 DNS_DP_LEGACY = 0x00000002,
591 DNS_DP_DOMAIN_DEFAULT = 0x00000004,
592 DNS_DP_FOREST_DEFAULT = 0x00000008,
593 DNS_DP_ENLISTED = 0x00000010,
594 DNS_DP_DELETED = 0x00000020
599 [string, charset(UTF16)] wchar_t * pszReplicaDn;
602 #define PDNS_RPC_DP_REPLICA DNS_RPC_DP_REPLICA*
605 DWORD dwRpcStructureVersion;
608 [string, charset(UTF8)] char * pszDpFqdn;
609 [string, charset(UTF16)] wchar_t * pszDpDn;
610 [string, charset(UTF16)] wchar_t * pszCrDn;
615 DWORD dwReserved[ 3 ];
616 DNS_EXTENSION pwszReserved[ 3 ];
617 [range(0,10000)] DWORD dwReplicaCount;
618 [size_is(dwReplicaCount)] PDNS_RPC_DP_REPLICA ReplicaArray[];
623 DWORD dwRpcStructureVersion;
626 [string, charset(UTF8)] char * pszDpFqdn;
631 #define PDNS_RPC_DP_ENUM DNS_RPC_DP_ENUM*
634 DWORD dwRpcStructureVersion;
636 [range(0,5000)] DWORD dwDpCount;
637 [size_is(dwDpCount)] PDNS_RPC_DP_ENUM DpArray[];
642 DWORD dwRpcStructureVersion;
644 [string, charset(UTF8)] char * pszDpFqdn; /* UTF8 */
650 DWORD dwRpcStructureVersion;
652 [string, charset(UTF8)] char * pszDestPartition;
654 DNS_RPC_ZONE_CHANGE_DP;
658 /* DNS Zone data types */
661 /* DNS_ZONE_TYPE defined in dnsp as dns_zone_type */
663 typedef [v1_enum] enum {
664 DNS_ZONE_SECSECURE_NO_SECURITY = 0x00,
665 DNS_ZONE_SECSECURE_NS_ONLY = 0x01,
666 DNS_ZONE_SECSECURE_LIST_ONLY = 0x02,
667 DNS_ZONE_SECSECURE_NO_XFER = 0x03
669 DNS_ZONE_SECONDARY_SECURITY;
671 typedef [v1_enum] enum {
672 DNS_ZONE_NOTIFY_OFF = 0x00,
673 DNS_ZONE_NOTIFY_ALL_SECONDARIES = 0x01,
674 DNS_ZONE_NOTIFY_LIST_ONLY = 0x02
676 DNS_ZONE_NOTIFY_LEVEL;
678 typedef [v1_enum] enum {
679 DNS_ZONE_REQUEST_PRIMARY = 0x00000001,
680 DNS_ZONE_REQUEST_SECONDARY = 0x00000002,
681 DNS_ZONE_REQUEST_CACHE = 0x00000004,
682 DNS_ZONE_REQUEST_AUTO = 0x00000008,
683 DNS_ZONE_REQUEST_FORWARD = 0x00000010,
684 DNS_ZONE_REQUEST_REVERSE = 0x00000020,
685 DNS_ZONE_REQUEST_FORWARDER = 0x00000040,
686 DNS_ZONE_REQUEST_STUB = 0x00000080,
687 DNS_ZONE_REQUEST_DS = 0x00000100,
688 DNS_ZONE_REQUEST_NON_DS = 0x00000200,
689 DNS_ZONE_REQUEST_DOMAIN_DP = 0x00000400,
690 DNS_ZONE_REQUEST_FOREST_DP = 0x00000800,
691 DNS_ZONE_REQUEST_CUSTOM_DP = 0x00001000,
692 DNS_ZONE_REQUEST_LEGACY_DP = 0x00002000
694 DNS_ZONE_REQUEST_FILTERS;
696 typedef [bitmap32bit] bitmap {
697 DNS_RPC_ZONE_PAUSED = 0x0001,
698 DNS_RPC_ZONE_SHUTDOWN = 0x0002,
699 DNS_RPC_ZONE_REVERSE = 0x0004,
700 DNS_RPC_ZONE_AUTOCREATED = 0x0008,
701 DNS_RPC_ZONE_DSINTEGRATED = 0x0010,
702 DNS_RPC_ZONE_AGING = 0x0020,
703 DNS_RPC_ZONE_UPDATE_UNSECURE = 0x0040,
704 DNS_RPC_ZONE_UPDATE_SECURE = 0x0080,
705 DNS_RPC_ZONE_READONLY = 0x0100
706 } DNS_RPC_ZONE_FLAGS;
709 [string, charset(UTF16)] uint16 * pszZoneName;
710 DNS_RPC_ZONE_FLAGS Flags;
715 #define PDNS_RPC_ZONE_W2K DNS_RPC_ZONE_W2K*
718 DWORD dwRpcStructureVersion;
720 [string, charset(UTF16)] wchar_t * pszZoneName;
721 DNS_RPC_ZONE_FLAGS Flags;
724 DNS_RPC_DP_FLAGS dwDpFlags;
725 [string, charset(UTF8)] char * pszDpFqdn;
728 #define DNS_RPC_ZONE DNS_RPC_ZONE_DOTNET
729 #define PDNS_RPC_ZONE_DOTNET DNS_RPC_ZONE_DOTNET*
731 /* Zone enumeration */
733 [range(0,500000)] DWORD dwZoneCount;
734 [size_is(dwZoneCount)] PDNS_RPC_ZONE_W2K ZoneArray[];
736 DNS_RPC_ZONE_LIST_W2K;
739 DWORD dwRpcStructureVersion;
741 [range(0,500000)] DWORD dwZoneCount;
742 [size_is(dwZoneCount)] PDNS_RPC_ZONE_DOTNET ZoneArray[];
744 DNS_RPC_ZONE_LIST_DOTNET;
745 #define DNS_RPC_ZONE_LIST DNS_RPC_ZONE_LIST_DOTNET
747 /* Zone information */
749 [string, charset(UTF8)] char * pszZoneName;
752 dns_zone_update fAllowUpdate;
759 [string, charset(UTF8)] char * pszDataFile;
762 PIP4_ARRAY aipMasters;
765 DNS_ZONE_SECONDARY_SECURITY fSecureSecondaries;
766 DNS_ZONE_NOTIFY_LEVEL fNotifyLevel;
767 PIP4_ARRAY aipSecondaries;
768 PIP4_ARRAY aipNotify;
770 /* WINS or NetBIOS lookup */
776 DWORD dwNoRefreshInterval;
777 DWORD dwRefreshInterval;
778 DWORD dwAvailForScavengeTime;
779 PIP4_ARRAY aipScavengeServers;
781 /* save some space, just in case */
782 /* avoid versioning issues if possible */
788 DNS_RPC_ZONE_INFO_W2K;
791 DWORD dwRpcStructureVersion;
794 [string, charset(UTF8)] char * pszZoneName;
797 dns_zone_update fAllowUpdate;
804 [string, charset(UTF8)] char * pszDataFile;
807 PIP4_ARRAY aipMasters;
810 DNS_ZONE_SECONDARY_SECURITY fSecureSecondaries;
811 DNS_ZONE_NOTIFY_LEVEL fNotifyLevel;
812 PIP4_ARRAY aipSecondaries;
813 PIP4_ARRAY aipNotify;
815 /* WINS or NetBIOS lookup */
821 DWORD dwNoRefreshInterval;
822 DWORD dwRefreshInterval;
823 DWORD dwAvailForScavengeTime;
824 PIP4_ARRAY aipScavengeServers;
826 /* Forwarder zones */
827 DWORD dwForwarderTimeout;
828 DWORD fForwarderSlave;
831 PIP4_ARRAY aipLocalMasters;
833 /* Directory partition */
835 [string, charset(UTF8)] char * pszDpFqdn;
836 [string, charset(UTF16)] wchar_t * pwszZoneDn;
838 /* Xfr time information */
839 DWORD dwLastSuccessfulSoaCheck;
840 DWORD dwLastSuccessfulXfr;
842 /* save some space, just in case */
848 [string, charset(UTF8)] char * pReserved1;
849 [string, charset(UTF8)] char * pReserved2;
850 [string, charset(UTF8)] char * pReserved3;
851 [string, charset(UTF8)] char * pReserved4;
853 DNS_RPC_ZONE_INFO_DOTNET;
856 DWORD dwRpcStructureVersion;
859 [string, charset(UTF8)] char * pszZoneName;
862 dns_zone_update fAllowUpdate;
869 [string, charset(UTF8)] char * pszDataFile;
872 PDNS_ADDR_ARRAY aipMasters;
875 DNS_ZONE_SECONDARY_SECURITY fSecureSecondaries;
876 DNS_ZONE_NOTIFY_LEVEL fNotifyLevel;
877 PDNS_ADDR_ARRAY aipSecondaries;
878 PDNS_ADDR_ARRAY aipNotify;
880 /* WINS or NetBIOS lookup */
886 DWORD dwNoRefreshInterval;
887 DWORD dwRefreshInterval;
888 DWORD dwAvailForScavengeTime;
889 PDNS_ADDR_ARRAY aipScavengeServers;
891 /* Forwarder zones */
892 DWORD dwForwarderTimeout;
893 DWORD fForwarderSlave;
896 PDNS_ADDR_ARRAY aipLocalMasters;
898 /* Directory partition */
900 [string, charset(UTF8)] char * pszDpFqdn;
901 [string, charset(UTF16)] wchar_t * pwszZoneDn;
902 /* Xfr time information */
903 DWORD dwLastSuccessfulSoaCheck;
904 DWORD dwLastSuccessfulXfr;
906 DWORD fQueuedForBackgroundLoad;
907 DWORD fBackgroundLoadInProgress;
910 /* Additional zone transfer information */
911 DWORD dwLastXfrAttempt;
912 DWORD dwLastXfrResult;
914 DNS_RPC_ZONE_INFO_LONGHORN;
915 #define DNS_RPC_ZONE_INFO DNS_RPC_ZONE_INFO_LONGHORN
917 /* Zone property data */
919 DNS_ZONE_SECONDARY_SECURITY fSecureSecondaries;
920 DNS_ZONE_NOTIFY_LEVEL fNotifyLevel;
921 PIP4_ARRAY aipSecondaries;
922 PIP4_ARRAY aipNotify;
924 DNS_RPC_ZONE_SECONDARIES_W2K;
927 DWORD dwRpcStructureVersion;
930 DNS_ZONE_SECONDARY_SECURITY fSecureSecondaries;
931 DNS_ZONE_NOTIFY_LEVEL fNotifyLevel;
932 PIP4_ARRAY aipSecondaries;
933 PIP4_ARRAY aipNotify;
935 DNS_RPC_ZONE_SECONDARIES_DOTNET;
938 DWORD dwRpcStructureVersion;
941 DNS_ZONE_SECONDARY_SECURITY fSecureSecondaries;
942 DNS_ZONE_NOTIFY_LEVEL fNotifyLevel;
943 PDNS_ADDR_ARRAY aipSecondaries;
944 PDNS_ADDR_ARRAY aipNotify;
946 DNS_RPC_ZONE_SECONDARIES_LONGHORN;
947 #define DNS_RPC_ZONE_SECONDARIES DNS_RPC_ZONE_SECONDARIES_LONGHORN
952 [string, charset(UTF8)] char * pszFileName;
954 DNS_RPC_ZONE_DATABASE_W2K;
957 DWORD dwRpcStructureVersion;
961 [string, charset(UTF8)] char * pszFileName;
963 DNS_RPC_ZONE_DATABASE_DOTNET;
964 #define DNS_RPC_ZONE_DATABASE DNS_RPC_ZONE_DATABASE_DOTNET
966 /* Zone create data */
968 [string, charset(UTF8)] char * pszZoneName;
970 dns_zone_update fAllowUpdate;
976 [string, charset(UTF8)] char * pszDataFile;
980 /* Admin name (if auto-create SOA) */
982 [string, charset(UTF8)] char * pszAdmin;
984 /* Masters (if secondary) */
986 PIP4_ARRAY aipMasters;
990 PIP4_ARRAY aipSecondaries;
991 DNS_ZONE_SECONDARY_SECURITY fSecureSecondaries;
992 DNS_ZONE_NOTIFY_LEVEL fNotifyLevel;
994 /* Reserve some space to avoid versioning issues */
996 [string, charset(UTF8)] char * pvReserved1;
997 [string, charset(UTF8)] char * pvReserved2;
998 [string, charset(UTF8)] char * pvReserved3;
999 [string, charset(UTF8)] char * pvReserved4;
1000 [string, charset(UTF8)] char * pvReserved5;
1001 [string, charset(UTF8)] char * pvReserved6;
1002 [string, charset(UTF8)] char * pvReserved7;
1003 [string, charset(UTF8)] char * pvReserved8;
1013 DNS_RPC_ZONE_CREATE_INFO_W2K;
1016 DWORD dwRpcStructureVersion;
1019 [string, charset(UTF8)] char * pszZoneName;
1021 dns_zone_update fAllowUpdate;
1027 [string, charset(UTF8)] char * pszDataFile;
1028 DWORD fDsIntegrated;
1029 DWORD fLoadExisting;
1031 /* Admin name (if auto-create SOA) */
1033 [string, charset(UTF8)] char * pszAdmin;
1035 /* Masters (if secondary) */
1037 PIP4_ARRAY aipMasters;
1041 PIP4_ARRAY aipSecondaries;
1042 DNS_ZONE_SECONDARY_SECURITY fSecureSecondaries;
1043 DNS_ZONE_NOTIFY_LEVEL fNotifyLevel;
1045 /* Forwarder zones */
1048 DWORD fRecurseAfterForwarding;
1050 /* Directory partition */
1052 DWORD dwDpFlags; /* specify built-in DP or */
1053 [string, charset(UTF8)] char * pszDpFqdn; /* UTF8 FQDN of partition */
1055 DWORD dwReserved[ 32 ];
1057 DNS_RPC_ZONE_CREATE_INFO_DOTNET;
1060 DWORD dwRpcStructureVersion;
1063 [string, charset(UTF8)] char * pszZoneName;
1065 dns_zone_update fAllowUpdate;
1071 [string, charset(UTF8)] char * pszDataFile;
1072 DWORD fDsIntegrated;
1073 DWORD fLoadExisting;
1075 /* Admin name (if auto-create SOA) */
1077 [string, charset(UTF8)] char * pszAdmin;
1079 /* Masters (if secondary) */
1081 PDNS_ADDR_ARRAY aipMasters;
1085 PDNS_ADDR_ARRAY aipSecondaries;
1086 DNS_ZONE_SECONDARY_SECURITY fSecureSecondaries;
1087 DNS_ZONE_NOTIFY_LEVEL fNotifyLevel;
1089 /* Forwarder zones */
1092 DWORD fRecurseAfterForwarding;
1094 /* Directory partition */
1096 DWORD dwDpFlags; /* specify built-in DP or */
1097 [string, charset(UTF8)] char * pszDpFqdn; /* UTF8 FQDN of partition */
1099 DWORD dwReserved[ 32 ];
1101 DNS_RPC_ZONE_CREATE_INFO_LONGHORN;
1102 #define DNS_RPC_ZONE_CREATE_INFO DNS_RPC_ZONE_CREATE_INFO_LONGHORN
1106 DWORD dwRpcStructureVersion;
1109 [string, charset(UTF8)] char * pszZoneExportFile;
1111 DNS_RPC_ZONE_EXPORT_INFO;
1114 DWORD dwRpcStructureVersion;
1118 [string, charset(UTF8)] char * pszPartitionFqdn;
1119 [string, charset(UTF8)] char * pszQueryString;
1121 DNS_EXTENSION pszReserved[ 6 ];
1123 DNS_RPC_ENUM_ZONES_FILTER;
1125 /* Forwarders information */
1127 DWORD fRecurseAfterForwarding;
1128 DWORD dwForwardTimeout;
1129 PIP4_ARRAY aipForwarders;
1131 DNS_RPC_FORWARDERS_W2K;
1134 DWORD dwRpcStructureVersion;
1136 DWORD fRecurseAfterForwarding;
1137 DWORD dwForwardTimeout;
1138 PIP4_ARRAY aipForwarders;
1140 DNS_RPC_FORWARDERS_DOTNET;
1143 DWORD dwRpcStructureVersion;
1145 DWORD fRecurseAfterForwarding;
1146 DWORD dwForwardTimeout;
1147 PDNS_ADDR_ARRAY aipForwarders;
1149 DNS_RPC_FORWARDERS_LONGHORN;
1150 #define DNS_RPC_FORWARDERS DNS_RPC_FORWARDERS_LONGHORN
1154 /* DNS autoconfig data types */
1157 typedef [v1_enum] enum {
1158 DNS_RPC_AUTOCONFIG_INTERNAL_ROOTHINTS = 0x00000001,
1159 DNS_RPC_AUTOCONFIG_INTERNAL_FORWARDERS = 0x00000002,
1160 DNS_RPC_AUTOCONFIG_INTERNAL_ZONES = 0x00000004,
1161 DNS_RPC_AUTOCONFIG_INTERNAL_SELFPOINT = 0x00000010,
1162 DNS_RPC_AUTOCONFIG_INTERNAL_SELFPOINT_PREPEND = 0x00000020,
1163 DNS_RPC_AUTOCONFIG_INTERNAL_SELFPOINT_APPEND = 0x00000040,
1164 DNS_RPC_AUTOCONFIG_INTERNAL_RETURN_ERROR = 0x00008000,
1165 DNS_RPC_AUTOCONFIG_ALL = 0xFFFFFFFF
1170 DWORD dwRpcStructureVersion;
1172 DNS_RPC_AUTOCONFIG dwAutoConfigFlags;
1174 [string, charset(UTF8)] char * pszNewDomainName;
1176 DNS_RPC_AUTOCONFIGURE;
1180 /* DNS logging data types */
1183 typedef [bitmap32bit] bitmap {
1184 DNS_EVENT_LOG_SUCCESS = 0x00000000,
1185 DNS_EVENT_LOG_ERROR_TYPE = 0x00000001,
1186 DNS_EVENT_LOG_WARNING_TYPE = 0x00000002,
1187 DNS_EVENT_LOG_INFORMATION_TYPE = 0x00000004
1189 DNS_EVENT_LOG_TYPES;
1191 typedef [bitmap32bit] bitmap {
1192 DNS_RPC_VIEW_AUTHORITY_DATA = 0x00000001,
1193 DNS_RPC_VIEW_CACHE_DATA = 0x00000002,
1194 DNS_RPC_VIEW_GLUE_DATA = 0x00000004,
1195 DNS_RPC_VIEW_ROOT_HINT_DATA = 0x00000008,
1196 DNS_RPC_VIEW_ADDITIONAL_DATA = 0x00000010,
1197 DNS_RPC_VIEW_NO_CHILDREN = 0x00010000,
1198 DNS_RPC_VIEW_ONLY_CHILDREN = 0x00020000
1204 /* DNS statistics data types */
1216 DNSSRV_STAT_HEADER Header;
1223 /* DNS Typid and Union of all RPC data types */
1226 typedef [v1_enum] enum {
1227 DNSSRV_TYPEID_NULL = 0,
1228 DNSSRV_TYPEID_DWORD = 1,
1229 DNSSRV_TYPEID_LPSTR = 2,
1230 DNSSRV_TYPEID_LPWSTR = 3,
1231 DNSSRV_TYPEID_IPARRAY = 4,
1232 DNSSRV_TYPEID_BUFFER = 5,
1233 DNSSRV_TYPEID_SERVER_INFO_W2K = 6,
1234 DNSSRV_TYPEID_STATS = 7,
1235 DNSSRV_TYPEID_FORWARDERS_W2K = 8,
1236 DNSSRV_TYPEID_ZONE_W2K = 9,
1237 DNSSRV_TYPEID_ZONE_INFO_W2K = 10,
1238 DNSSRV_TYPEID_ZONE_SECONDARIES_W2K = 11,
1239 DNSSRV_TYPEID_ZONE_DATABASE_W2K = 12,
1240 DNSSRV_TYPEID_ZONE_TYPE_RESET_W2K = 13,
1241 DNSSRV_TYPEID_ZONE_CREATE_W2K = 14,
1242 DNSSRV_TYPEID_NAME_AND_PARAM = 15,
1243 DNSSRV_TYPEID_ZONE_LIST_W2K = 16,
1244 DNSSRV_TYPEID_ZONE_RENAME = 17,
1245 DNSSRV_TYPEID_ZONE_EXPORT = 18,
1246 DNSSRV_TYPEID_SERVER_INFO_DOTNET = 19,
1247 DNSSRV_TYPEID_FORWARDERS_DOTNET = 20,
1248 DNSSRV_TYPEID_ZONE = 21,
1249 DNSSRV_TYPEID_ZONE_INFO_DOTNET = 22,
1250 DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET = 23,
1251 DNSSRV_TYPEID_ZONE_DATABASE = 24,
1252 DNSSRV_TYPEID_ZONE_TYPE_RESET_DOTNET = 25,
1253 DNSSRV_TYPEID_ZONE_CREATE_DOTNET = 26,
1254 DNSSRV_TYPEID_ZONE_LIST = 27,
1255 DNSSRV_TYPEID_DP_ENUM = 28,
1256 DNSSRV_TYPEID_DP_INFO = 29,
1257 DNSSRV_TYPEID_DP_LIST = 30,
1258 DNSSRV_TYPEID_ENLIST_DP = 31,
1259 DNSSRV_TYPEID_ZONE_CHANGE_DP = 32,
1260 DNSSRV_TYPEID_ENUM_ZONES_FILTER = 33,
1261 DNSSRV_TYPEID_ADDRARRAY = 34,
1262 DNSSRV_TYPEID_SERVER_INFO = 35,
1263 DNSSRV_TYPEID_ZONE_INFO = 36,
1264 DNSSRV_TYPEID_FORWARDERS = 37,
1265 DNSSRV_TYPEID_ZONE_SECONDARIES = 38,
1266 DNSSRV_TYPEID_ZONE_TYPE_RESET = 39,
1267 DNSSRV_TYPEID_ZONE_CREATE = 40,
1268 DNSSRV_TYPEID_IP_VALIDATE = 41,
1269 DNSSRV_TYPEID_AUTOCONFIGURE = 42,
1270 DNSSRV_TYPEID_UTF8_STRING_LIST = 43,
1271 DNSSRV_TYPEID_UNICODE_STRING_LIST = 44
1275 typedef [switch_type(uint3264)] union {
1276 [case(DNSSRV_TYPEID_NULL)] PBYTE Null;
1278 [case(DNSSRV_TYPEID_DWORD)] DWORD Dword;
1280 [case(DNSSRV_TYPEID_LPSTR)] [string, charset(UTF8)] char * String;
1282 [case(DNSSRV_TYPEID_LPWSTR)] [string, charset(UTF16)] wchar_t * WideString;
1284 [case(DNSSRV_TYPEID_IPARRAY)] IP4_ARRAY *IpArray;
1286 [case(DNSSRV_TYPEID_BUFFER)]
1287 DNS_RPC_BUFFER *Buffer;
1289 [case(DNSSRV_TYPEID_SERVER_INFO_W2K)]
1290 DNS_RPC_SERVER_INFO_W2K *ServerInfoW2K;
1292 [case(DNSSRV_TYPEID_STATS)]
1295 [case(DNSSRV_TYPEID_FORWARDERS_W2K)]
1296 DNS_RPC_FORWARDERS_W2K *ForwardersW2K;
1298 [case(DNSSRV_TYPEID_ZONE_W2K)]
1299 DNS_RPC_ZONE_W2K *ZoneW2K;
1301 [case(DNSSRV_TYPEID_ZONE_INFO_W2K)]
1302 DNS_RPC_ZONE_INFO_W2K *ZoneInfoW2K;
1304 [case(DNSSRV_TYPEID_ZONE_SECONDARIES_W2K)]
1305 DNS_RPC_ZONE_SECONDARIES_W2K *SecondariesW2K;
1307 [case(DNSSRV_TYPEID_ZONE_DATABASE_W2K)]
1308 DNS_RPC_ZONE_DATABASE_W2K *DatabaseW2K;
1310 [case(DNSSRV_TYPEID_ZONE_CREATE_W2K)]
1311 DNS_RPC_ZONE_CREATE_INFO_W2K *ZoneCreateW2K;
1313 [case(DNSSRV_TYPEID_NAME_AND_PARAM)]
1314 DNS_RPC_NAME_AND_PARAM *NameAndParam;
1316 [case(DNSSRV_TYPEID_ZONE_LIST_W2K)]
1317 DNS_RPC_ZONE_LIST_W2K *ZoneListW2K;
1319 [case(DNSSRV_TYPEID_SERVER_INFO_DOTNET)]
1320 DNS_RPC_SERVER_INFO_DOTNET *ServerInfoDotNet;
1322 [case(DNSSRV_TYPEID_FORWARDERS_DOTNET)]
1323 DNS_RPC_FORWARDERS_DOTNET *ForwardersDotNet;
1325 [case(DNSSRV_TYPEID_ZONE)]
1328 [case(DNSSRV_TYPEID_ZONE_INFO_DOTNET)]
1329 DNS_RPC_ZONE_INFO_DOTNET *ZoneInfoDotNet;
1331 [case(DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET)]
1332 DNS_RPC_ZONE_SECONDARIES_DOTNET *SecondariesDotNet;
1334 [case(DNSSRV_TYPEID_ZONE_DATABASE)]
1335 DNS_RPC_ZONE_DATABASE *Database;
1337 [case(DNSSRV_TYPEID_ZONE_CREATE_DOTNET)]
1338 DNS_RPC_ZONE_CREATE_INFO_DOTNET *ZoneCreateDotNet;
1340 [case(DNSSRV_TYPEID_ZONE_LIST)]
1341 DNS_RPC_ZONE_LIST *ZoneList;
1343 [case(DNSSRV_TYPEID_ZONE_EXPORT)]
1344 DNS_RPC_ZONE_EXPORT_INFO *ZoneExport;
1346 [case(DNSSRV_TYPEID_DP_INFO)]
1347 DNS_RPC_DP_INFO *DirectoryPartition;
1349 [case(DNSSRV_TYPEID_DP_ENUM)]
1350 DNS_RPC_DP_ENUM *DirectoryPartitionEnum;
1352 [case(DNSSRV_TYPEID_DP_LIST)]
1353 DNS_RPC_DP_LIST *DirectoryPartitionList;
1355 [case(DNSSRV_TYPEID_ENLIST_DP)]
1356 DNS_RPC_ENLIST_DP *EnlistDirectoryPartition;
1358 [case(DNSSRV_TYPEID_ZONE_CHANGE_DP)]
1359 DNS_RPC_ZONE_CHANGE_DP *ZoneChangeDirectoryPartition;
1361 [case(DNSSRV_TYPEID_ENUM_ZONES_FILTER)]
1362 DNS_RPC_ENUM_ZONES_FILTER *EnumZonesFilter;
1364 [case(DNSSRV_TYPEID_ADDRARRAY)]
1365 DNS_ADDR_ARRAY *AddrArray;
1367 [case(DNSSRV_TYPEID_SERVER_INFO)]
1368 DNS_RPC_SERVER_INFO *ServerInfo;
1370 [case(DNSSRV_TYPEID_ZONE_CREATE)]
1371 DNS_RPC_ZONE_CREATE_INFO *ZoneCreate;
1373 [case(DNSSRV_TYPEID_FORWARDERS)]
1374 DNS_RPC_FORWARDERS *Forwarders;
1376 [case(DNSSRV_TYPEID_ZONE_SECONDARIES)]
1377 DNS_RPC_ZONE_SECONDARIES *Secondaries;
1379 [case(DNSSRV_TYPEID_IP_VALIDATE)]
1380 DNS_RPC_IP_VALIDATE *IpValidate;
1382 [case(DNSSRV_TYPEID_ZONE_INFO)]
1383 DNS_RPC_ZONE_INFO *ZoneInfo;
1385 [case(DNSSRV_TYPEID_AUTOCONFIGURE)]
1386 DNS_RPC_AUTOCONFIGURE *AutoConfigure;
1388 [case(DNSSRV_TYPEID_UTF8_STRING_LIST)]
1389 DNS_RPC_UTF8_STRING_LIST *Utf8StringList;
1394 /* DNS RPC interface */
1397 typedef [public,gensize] struct {
1398 [value((12+ndr_size_DNS_RPC_NAME(&dnsNodeName,0)+3) & ~3)] uint16 wLength;
1399 uint16 wRecordCount;
1401 uint32 dwChildCount;
1402 DNS_RPC_NAME dnsNodeName;
1403 DNS_RPC_RECORD records[wRecordCount];
1406 typedef [public,nopull,nopush,gensize] struct {
1408 DNS_RPC_RECORDS rec[count];
1409 } DNS_RPC_RECORDS_ARRAY;
1411 WERROR DnssrvOperation(
1412 [in,unique,string,charset(UTF16)] uint16 *pwszServerName,
1413 [in,unique,string,charset(UTF8)] uint8 *pszZone,
1414 [in] DWORD dwContext,
1415 [in,unique,string,charset(UTF8)] uint8 *pszOperation,
1416 [in] DNS_RPC_TYPEID dwTypeId,
1417 [in, switch_is(dwTypeId)] DNSSRV_RPC_UNION pData
1421 [in,unique,string,charset(UTF16)] uint16 *pwszServerName,
1422 [in,unique,string,charset(UTF8)] uint8 *pszZone,
1423 [in,unique,string,charset(UTF8)] uint8 *pszOperation,
1424 [out] DNS_RPC_TYPEID *pdwTypeId,
1425 [out, switch_is(*pdwTypeId)] DNSSRV_RPC_UNION *ppData
1428 WERROR DnssrvComplexOperation(
1429 [in,unique,string,charset(UTF16)] uint16 *pwszServerName,
1430 [in,unique,string,charset(UTF8)] uint8 *pszZone,
1431 [in,unique,string,charset(UTF8)] uint8 *pszOperation,
1432 [in] DNS_RPC_TYPEID dwTypeIn,
1433 [in, switch_is(dwTypeIn)] DNSSRV_RPC_UNION pDataIn,
1434 [out] DNS_RPC_TYPEID *pdwTypeOut,
1435 [out, switch_is(*pdwTypeOut)] DNSSRV_RPC_UNION *ppDataOut
1438 WERROR DnssrvEnumRecords(
1439 [in,unique,string,charset(UTF16)] uint16 *pwszServerName,
1440 [in,unique,string,charset(UTF8)] uint8 *pszZone,
1441 [in,unique,string,charset(UTF8)] uint8 *pszNodeName,
1442 [in,unique,string,charset(UTF8)] uint8 *pszStartChild,
1443 [in] dns_record_type wRecordType,
1444 [in] DNS_SELECT_FLAGS fSelectFlag,
1445 [in,unique,string,charset(UTF8)] uint8 *pszFilterStart,
1446 [in,unique,string,charset(UTF8)] uint8 *pszFilterStop,
1447 [out] DWORD *pdwBufferLength,
1448 [out,ref,subcontext(4),subcontext_size(*pdwBufferLength)] DNS_RPC_RECORDS_ARRAY **pBuffer
1451 WERROR DnssrvUpdateRecord(
1452 [in,unique,string,charset(UTF16)] uint16 *pwszServerName,
1453 [in,unique,string,charset(UTF8)] uint8 *pszZone,
1454 [in,unique,string,charset(UTF8)] uint8 *pszNodeName,
1455 [in, unique] DNS_RPC_RECORD_BUF *pAddRecord,
1456 [in, unique] DNS_RPC_RECORD_BUF *pDeleteRecord
1459 WERROR DnssrvOperation2(
1460 [in] DNS_RPC_CLIENT_VERSION dwClientVersion,
1461 [in] uint32 dwSettingFlags,
1462 [in,unique,string,charset(UTF16)] uint16 *pwszServerName,
1463 [in,unique,string,charset(UTF8)] uint8 *pszZone,
1464 [in] DWORD dwContext,
1465 [in,unique,string,charset(UTF8)] uint8 *pszOperation,
1466 [in] DNS_RPC_TYPEID dwTypeId,
1467 [in, switch_is(dwTypeId)] DNSSRV_RPC_UNION pData
1470 WERROR DnssrvQuery2(
1471 [in] DNS_RPC_CLIENT_VERSION dwClientVersion,
1472 [in] uint32 dwSettingFlags,
1473 [in,unique,string,charset(UTF16)] uint16 *pwszServerName,
1474 [in,unique,string,charset(UTF8)] uint8 *pszZone,
1475 [in,unique,string,charset(UTF8)] uint8 *pszOperation,
1476 [out] DNS_RPC_TYPEID *pdwTypeId,
1477 [out, switch_is(*pdwTypeId)] DNSSRV_RPC_UNION *ppData
1480 WERROR DnssrvComplexOperation2(
1481 [in] DNS_RPC_CLIENT_VERSION dwClientVersion,
1482 [in] uint32 dwSettingFlags,
1483 [in,unique,string,charset(UTF16)] uint16 *pwszServerName,
1484 [in,unique,string,charset(UTF8)] uint8 *pszZone,
1485 [in,unique,string,charset(UTF8)] uint8 *pszOperation,
1486 [in] DNS_RPC_TYPEID dwTypeIn,
1487 [in, switch_is(dwTypeIn)] DNSSRV_RPC_UNION pDataIn,
1488 [out] DNS_RPC_TYPEID *pdwTypeOut,
1489 [out, switch_is(*pdwTypeOut)] DNSSRV_RPC_UNION *ppDataOut
1492 WERROR DnssrvEnumRecords2(
1493 [in] DNS_RPC_CLIENT_VERSION dwClientVersion,
1494 [in] DWORD dwSettingFlags,
1495 [in,unique,string,charset(UTF16)] uint16 *pwszServerName,
1496 [in,unique,string,charset(UTF8)] uint8 *pszZone,
1497 [in,unique,string,charset(UTF8)] uint8 *pszNodeName,
1498 [in,unique,string,charset(UTF8)] uint8 *pszStartChild,
1499 [in] dns_record_type wRecordType,
1500 [in] DNS_SELECT_FLAGS fSelectFlag,
1501 [in,unique,string,charset(UTF8)] uint8 *pszFilterStart,
1502 [in,unique,string,charset(UTF8)] uint8 *pszFilterStop,
1503 [out] uint32 *pdwBufferLength,
1504 [out,ref,subcontext(4),subcontext_size(*pdwBufferLength)] DNS_RPC_RECORDS_ARRAY **pBuffer
1507 WERROR DnssrvUpdateRecord2(
1508 [in] DNS_RPC_CLIENT_VERSION dwClientVersion,
1509 [in] uint32 dwSettingFlags,
1510 [in,unique,string,charset(UTF16)] uint16 *pwszServerName,
1511 [in,unique,string,charset(UTF8)] uint8 *pszZone,
1512 [in,string,charset(UTF8)] uint8 *pszNodeName,
1513 [in, unique] DNS_RPC_RECORD_BUF *pAddRecord,
1514 [in, unique] DNS_RPC_RECORD_BUF *pDeleteRecord