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 helpstring("DNS Server")
16 #define
wchar_t uint16
17 #define
BOOLEAN boolean8
18 #define BOOL boolean32
24 #define PDWORD uint32
*
35 DNSSRV_STAT_HEADER Header
;
41 [size_is( AddrCount
)] DWORD AddrArray
[];
43 #define PIP4_ARRAY IP4_ARRAY
*
47 DWORD DnsAddrUserDword
[8];
60 [size_is( AddrCount
)] DNS_ADDR AddrArray
[];
62 #define PDNS_ADDR_ARRAY DNS_ADDR_ARRAY
*
65 /* RPC buffer type for returned data */
69 [size_is(dwLength
)] BYTE Buffer
[];
74 /* Server data types */
78 /* basic configuration flags */
82 BOOLEAN fAdminConfigured
;
90 [string, charset
(UTF8
)] char * pszServerName
;
94 [string, charset
(UTF16
)] wchar_t * pszDsContainer
;
98 PIP4_ARRAY aipServerAddrs
;
99 PIP4_ARRAY aipListenAddrs
;
103 PIP4_ARRAY aipForwarders
;
105 /* future extensions */
121 /* configuration DWORDs */
123 DWORD dwForwardTimeout
;
125 DWORD dwNameCheckFlag
;
126 DWORD cAddressAnswerLimit
;
127 DWORD dwRecursionRetry
;
128 DWORD dwRecursionTimeout
;
130 DWORD dwDsPollingInterval
;
132 /* aging / scavenging */
134 DWORD dwScavengingInterval
;
135 DWORD dwDefaultRefreshInterval
;
136 DWORD dwDefaultNoRefreshInterval
;
138 DWORD dwReserveArray
[10];
143 /* configuration flags */
145 BOOLEAN fAutoReverseZones
;
146 BOOLEAN fAutoCacheUpdate
;
148 /* recursion control */
150 BOOLEAN fRecurseAfterForwarding
;
151 BOOLEAN fForwardDelegations
;
152 BOOLEAN fNoRecursion
;
153 BOOLEAN fSecureResponses
;
158 BOOLEAN fLocalNetPriority
;
160 /* BIND compatibility and mimicking */
162 BOOLEAN fBindSecondaries
;
163 BOOLEAN fWriteAuthorityNs
;
165 /* Bells and whistles */
167 BOOLEAN fStrictFileParsing
;
168 BOOLEAN fLooseWildcarding
;
170 /* aging / scavenging */
172 BOOLEAN fDefaultAgingState
;
173 BOOLEAN fReserveArray
[15];
175 DNS_RPC_SERVER_INFO_W2K
;
178 [string, charset
(UTF8
)] uint8
*extension
;
181 typedef [public] struct {
182 DWORD dwRpcStructureVersion
;
185 /* basic configuration flags */
189 BOOLEAN fAdminConfigured
;
190 BOOLEAN fAllowUpdate
;
191 BOOLEAN fDsAvailable
;
194 /* pointer section */
197 [string, charset
(UTF8
)] char * pszServerName
;
201 [string, charset
(UTF16
)] wchar_t * pszDsContainer
;
205 PIP4_ARRAY aipServerAddrs
;
206 PIP4_ARRAY aipListenAddrs
;
210 PIP4_ARRAY aipForwarders
;
214 PIP4_ARRAY aipLogFilter
;
215 [string, charset
(UTF16
)] wchar_t * pwszLogFilePath
;
217 /* Server domain/forest */
219 [string, charset
(UTF8
)] char * pszDomainName
; /* UTF-8 FQDN */
220 [string, charset
(UTF8
)] char * pszForestName
; /* UTF-8 FQDN */
222 /* Built-in directory partitions */
224 [string, charset
(UTF8
)] char * pszDomainDirectoryPartition
; /* UTF-8 FQDN */
225 [string, charset
(UTF8
)] char * pszForestDirectoryPartition
; /* UTF-8 FQDN */
227 /* future extensions */
228 DNS_EXTENSION pExtensions
[6];
239 /* configuration DWORDs */
240 DWORD dwForwardTimeout
;
242 DWORD dwNameCheckFlag
;
243 DWORD cAddressAnswerLimit
;
244 DWORD dwRecursionRetry
;
245 DWORD dwRecursionTimeout
;
247 DWORD dwDsPollingInterval
;
248 DWORD dwLocalNetPriorityNetMask
;
250 /* aging and scavenging */
252 DWORD dwScavengingInterval
;
253 DWORD dwDefaultRefreshInterval
;
254 DWORD dwDefaultNoRefreshInterval
;
255 DWORD dwLastScavengeTime
;
259 DWORD dwEventLogLevel
;
260 DWORD dwLogFileMaxSize
;
262 /* Active Directory information */
264 DWORD dwDsForestVersion
;
265 DWORD dwDsDomainVersion
;
266 DWORD dwDsDsaVersion
;
268 DWORD dwReserveArray
[ 4 ];
273 /* configuration flags */
275 BOOLEAN fAutoReverseZones
;
276 BOOLEAN fAutoCacheUpdate
;
278 /* recursion control */
280 BOOLEAN fRecurseAfterForwarding
;
281 BOOLEAN fForwardDelegations
;
282 BOOLEAN fNoRecursion
;
283 BOOLEAN fSecureResponses
;
288 BOOLEAN fLocalNetPriority
;
290 /* BIND compatibility and mimicking */
292 BOOLEAN fBindSecondaries
;
293 BOOLEAN fWriteAuthorityNs
;
295 /* Bells and whistles */
297 BOOLEAN fStrictFileParsing
;
298 BOOLEAN fLooseWildcarding
;
300 /* aging \ scavenging */
302 BOOLEAN fDefaultAgingState
;
304 BOOLEAN fReserveArray
[ 15 ];
306 DNS_RPC_SERVER_INFO_DOTNET
;
309 DWORD dwRpcStructureVersion
;
312 /* basic configuration flags */
316 BOOLEAN fAdminConfigured
;
317 BOOLEAN fAllowUpdate
;
318 BOOLEAN fDsAvailable
;
321 /* pointer section */
324 [string, charset
(UTF8
)] char * pszServerName
;
328 [string, charset
(UTF16
)] wchar_t * pszDsContainer
;
332 PDNS_ADDR_ARRAY aipServerAddrs
;
333 PDNS_ADDR_ARRAY aipListenAddrs
;
337 PDNS_ADDR_ARRAY aipForwarders
;
341 PDNS_ADDR_ARRAY aipLogFilter
;
342 [string, charset
(UTF16
)] wchar_t * pwszLogFilePath
;
344 /* Server domain/forest */
346 [string, charset
(UTF8
)] char * pszDomainName
; /* UTF-8 FQDN */
347 [string, charset
(UTF8
)] char * pszForestName
; /* UTF-8 FQDN */
349 /* Built-in directory partitions */
351 [string, charset
(UTF8
)] char * pszDomainDirectoryPartition
; /* UTF-8 FQDN */
352 [string, charset
(UTF8
)] char * pszForestDirectoryPartition
; /* UTF-8 FQDN */
354 /* future extensions */
355 DNS_EXTENSION pExtensions
[6];
366 /* configuration DWORDs */
368 DWORD dwForwardTimeout
;
370 DWORD dwNameCheckFlag
;
371 DWORD cAddressAnswerLimit
;
372 DWORD dwRecursionRetry
;
373 DWORD dwRecursionTimeout
;
375 DWORD dwDsPollingInterval
;
376 DWORD dwLocalNetPriorityNetMask
;
378 /* aging and scavenging */
380 DWORD dwScavengingInterval
;
381 DWORD dwDefaultRefreshInterval
;
382 DWORD dwDefaultNoRefreshInterval
;
383 DWORD dwLastScavengeTime
;
387 DWORD dwEventLogLevel
;
388 DWORD dwLogFileMaxSize
;
390 /* Active Directory information */
392 DWORD dwDsForestVersion
;
393 DWORD dwDsDomainVersion
;
394 DWORD dwDsDsaVersion
;
397 DWORD dwReserveArray
[ 3 ];
402 /* configuration flags */
404 BOOLEAN fAutoReverseZones
;
405 BOOLEAN fAutoCacheUpdate
;
407 /* recursion control */
409 BOOLEAN fRecurseAfterForwarding
;
410 BOOLEAN fForwardDelegations
;
411 BOOLEAN fNoRecursion
;
412 BOOLEAN fSecureResponses
;
416 BOOLEAN fLocalNetPriority
;
418 /* BIND compatibility and mimicking */
420 BOOLEAN fBindSecondaries
;
421 BOOLEAN fWriteAuthorityNs
;
423 /* Bells and whistles */
425 BOOLEAN fStrictFileParsing
;
426 BOOLEAN fLooseWildcarding
;
428 /* aging \ scavenging */
430 BOOLEAN fDefaultAgingState
;
432 BOOLEAN fReserveArray
[ 15 ];
434 DNS_RPC_SERVER_INFO_LONGHORN
;
435 #define DNS_RPC_SERVER_INFO DNS_RPC_SERVER_INFO_LONGHORN
438 DWORD fRecurseAfterForwarding
;
439 DWORD dwForwardTimeout
;
440 PIP4_ARRAY aipForwarders
;
442 DNS_RPC_FORWARDERS_W2K
;
445 DWORD dwRpcStructureVersion
;
447 DWORD fRecurseAfterForwarding
;
448 DWORD dwForwardTimeout
;
449 PIP4_ARRAY aipForwarders
;
451 DNS_RPC_FORWARDERS_DOTNET
;
454 DWORD dwRpcStructureVersion
;
456 DWORD fRecurseAfterForwarding
;
457 DWORD dwForwardTimeout
;
458 PDNS_ADDR_ARRAY aipForwarders
;
460 DNS_RPC_FORWARDERS_LONGHORN
;
461 #define DNS_RPC_FORWARDERS DNS_RPC_FORWARDERS_LONGHORN
465 /* Basic zone data */
468 typedef [bitmap32bit
] bitmap
{
469 RPC_ZONE_PAUSED
= 0x001,
470 RPC_ZONE_SHUTDOWN
= 0x002,
471 RPC_ZONE_REVERSE
= 0x004,
472 RPC_ZONE_AUTOCREATED
= 0x008,
473 RPC_ZONE_DSINTEGRATED
= 0x010,
474 RPC_ZONE_AGING
= 0x020,
475 RPC_ZONE_UPDATE
= 0x0C0, /* two bits */
476 RPC_ZONE_READONLY
= 0x100
477 } DNS_RPC_ZONE_FLAGS
;
480 [string, charset
(UTF16
)] uint16
* pszZoneName
;
481 DNS_RPC_ZONE_FLAGS Flags
;
486 #define PDNS_RPC_ZONE_W2K DNS_RPC_ZONE_W2K
*
489 DWORD dwRpcStructureVersion
;
491 [string, charset
(UTF16
)] wchar_t * pszZoneName
;
492 DNS_RPC_ZONE_FLAGS Flags
;
496 [string, charset
(UTF8
)] char * pszDpFqdn
;
499 #define DNS_RPC_ZONE DNS_RPC_ZONE_DOTNET
500 #define PDNS_RPC_ZONE_DOTNET DNS_RPC_ZONE_DOTNET
*
504 /* Zone enumeration */
508 [range(0,500000)] DWORD dwZoneCount
;
509 [size_is(dwZoneCount
)] PDNS_RPC_ZONE_W2K ZoneArray
[];
511 DNS_RPC_ZONE_LIST_W2K
;
515 DWORD dwRpcStructureVersion
;
517 [range(0,500000)] DWORD dwZoneCount
;
518 [size_is(dwZoneCount
)] PDNS_RPC_ZONE_DOTNET ZoneArray
[];
520 DNS_RPC_ZONE_LIST_DOTNET
;
521 #define DNS_RPC_ZONE_LIST DNS_RPC_ZONE_LIST_DOTNET
525 /* Directory partition enumeration and info */
529 DWORD dwRpcStructureVersion
;
532 [string, charset
(UTF8
)] char * pszDpFqdn
;
537 #define PDNS_RPC_DP_ENUM DNS_RPC_DP_ENUM
*
540 DWORD dwRpcStructureVersion
;
542 [range(0,5000)] DWORD dwDpCount
;
543 [size_is(dwDpCount
)] PDNS_RPC_DP_ENUM DpArray
[];
549 [string, charset
(UTF16
)] wchar_t * pszReplicaDn
;
552 #define PDNS_RPC_DP_REPLICA DNS_RPC_DP_REPLICA
*
555 DWORD dwRpcStructureVersion
;
558 [string, charset
(UTF8
)] char * pszDpFqdn
;
559 [string, charset
(UTF16
)] wchar_t * pszDpDn
;
560 [string, charset
(UTF16
)] wchar_t * pszCrDn
;
565 DWORD dwReserved
[ 3 ];
566 DNS_EXTENSION pwszReserved
[ 3 ];
567 [range(0,10000)] DWORD dwReplicaCount
;
568 [size_is(dwReplicaCount
)] PDNS_RPC_DP_REPLICA ReplicaArray
[];
574 /* Enlist (or create) directory partition */
578 DWORD dwRpcStructureVersion
;
580 [string, charset
(UTF8
)] char * pszDpFqdn
; /* UTF8 */
590 DWORD dwRpcStructureVersion
;
593 [string, charset
(UTF8
)] char * pszZoneExportFile
;
595 DNS_RPC_ZONE_EXPORT_INFO
;
598 /* Zone property data */
602 DWORD fSecureSecondaries
;
604 PIP4_ARRAY aipSecondaries
;
605 PIP4_ARRAY aipNotify
;
607 DNS_RPC_ZONE_SECONDARIES_W2K
;
610 DWORD dwRpcStructureVersion
;
613 DWORD fSecureSecondaries
;
615 PIP4_ARRAY aipSecondaries
;
616 PIP4_ARRAY aipNotify
;
618 DNS_RPC_ZONE_SECONDARIES_DOTNET
;
621 DWORD dwRpcStructureVersion
;
624 DWORD fSecureSecondaries
;
626 PDNS_ADDR_ARRAY aipSecondaries
;
627 PDNS_ADDR_ARRAY aipNotify
;
629 DNS_RPC_ZONE_SECONDARIES_LONGHORN
;
630 #define DNS_RPC_ZONE_SECONDARIES DNS_RPC_ZONE_SECONDARIES_LONGHORN
634 [string, charset
(UTF8
)] char * pszFileName
;
636 DNS_RPC_ZONE_DATABASE_W2K
;
639 DWORD dwRpcStructureVersion
;
643 [string, charset
(UTF8
)] char * pszFileName
;
645 DNS_RPC_ZONE_DATABASE_DOTNET
;
646 #define DNS_RPC_ZONE_DATABASE DNS_RPC_ZONE_DATABASE_DOTNET
649 DWORD dwRpcStructureVersion
;
651 [string, charset
(UTF8
)] char * pszDestPartition
;
653 DNS_RPC_ZONE_CHANGE_DP
;
656 [string, charset
(UTF8
)] char * pszZoneName
;
666 [string, charset
(UTF8
)] char * pszDataFile
;
669 PIP4_ARRAY aipMasters
;
672 DWORD fSecureSecondaries
;
674 PIP4_ARRAY aipSecondaries
;
675 PIP4_ARRAY aipNotify
;
677 /* WINS or NetBIOS lookup */
683 DWORD dwNoRefreshInterval
;
684 DWORD dwRefreshInterval
;
685 DWORD dwAvailForScavengeTime
;
686 PIP4_ARRAY aipScavengeServers
;
688 /* save some space, just in case */
689 /* avoid versioning issues if possible */
695 DNS_RPC_ZONE_INFO_W2K
;
698 DWORD dwRpcStructureVersion
;
701 [string, charset
(UTF8
)] char * pszZoneName
;
711 [string, charset
(UTF8
)] char * pszDataFile
;
714 PIP4_ARRAY aipMasters
;
717 DWORD fSecureSecondaries
;
719 PIP4_ARRAY aipSecondaries
;
720 PIP4_ARRAY aipNotify
;
722 /* WINS or NetBIOS lookup */
728 DWORD dwNoRefreshInterval
;
729 DWORD dwRefreshInterval
;
730 DWORD dwAvailForScavengeTime
;
731 PIP4_ARRAY aipScavengeServers
;
733 /* Forwarder zones */
734 DWORD dwForwarderTimeout
;
735 DWORD fForwarderSlave
;
738 PIP4_ARRAY aipLocalMasters
;
740 /* Directory partition */
742 [string, charset
(UTF8
)] char * pszDpFqdn
;
743 [string, charset
(UTF16
)] wchar_t * pwszZoneDn
;
745 /* Xfr time information */
746 DWORD dwLastSuccessfulSoaCheck
;
747 DWORD dwLastSuccessfulXfr
;
749 /* save some space, just in case */
755 [string, charset
(UTF8
)] char * pReserved1
;
756 [string, charset
(UTF8
)] char * pReserved2
;
757 [string, charset
(UTF8
)] char * pReserved3
;
758 [string, charset
(UTF8
)] char * pReserved4
;
760 DNS_RPC_ZONE_INFO_DOTNET
;
763 DWORD dwRpcStructureVersion
;
766 [string, charset
(UTF8
)] char * pszZoneName
;
776 [string, charset
(UTF8
)] char * pszDataFile
;
779 PDNS_ADDR_ARRAY aipMasters
;
782 DWORD fSecureSecondaries
;
784 PDNS_ADDR_ARRAY aipSecondaries
;
785 PDNS_ADDR_ARRAY aipNotify
;
787 /* WINS or NetBIOS lookup */
793 DWORD dwNoRefreshInterval
;
794 DWORD dwRefreshInterval
;
795 DWORD dwAvailForScavengeTime
;
796 PDNS_ADDR_ARRAY aipScavengeServers
;
798 /* Forwarder zones */
799 DWORD dwForwarderTimeout
;
800 DWORD fForwarderSlave
;
803 PDNS_ADDR_ARRAY aipLocalMasters
;
805 /* Directory partition */
807 [string, charset
(UTF8
)] char * pszDpFqdn
;
808 [string, charset
(UTF16
)] wchar_t * pwszZoneDn
;
809 /* Xfr time information */
810 DWORD dwLastSuccessfulSoaCheck
;
811 DWORD dwLastSuccessfulXfr
;
813 DWORD fQueuedForBackgroundLoad
;
814 DWORD fBackgroundLoadInProgress
;
817 /* Additional zone transfer information */
818 DWORD dwLastXfrAttempt
;
819 DWORD dwLastXfrResult
;
821 DNS_RPC_ZONE_INFO_LONGHORN
;
822 #define DNS_RPC_ZONE_INFO DNS_RPC_ZONE_INFO_LONGHORN
825 /* Zone create data */
829 [string, charset
(UTF8
)] char * pszZoneName
;
837 [string, charset
(UTF8
)] char * pszDataFile
;
841 /* Admin name (if auto-create SOA) */
843 [string, charset
(UTF8
)] char * pszAdmin
;
845 /* Masters (if secondary) */
847 PIP4_ARRAY aipMasters
;
851 PIP4_ARRAY aipSecondaries
;
852 DWORD fSecureSecondaries
;
855 /* Reserve some space to avoid versioning issues */
857 [string, charset
(UTF8
)] char * pvReserved1
;
858 [string, charset
(UTF8
)] char * pvReserved2
;
859 [string, charset
(UTF8
)] char * pvReserved3
;
860 [string, charset
(UTF8
)] char * pvReserved4
;
861 [string, charset
(UTF8
)] char * pvReserved5
;
862 [string, charset
(UTF8
)] char * pvReserved6
;
863 [string, charset
(UTF8
)] char * pvReserved7
;
864 [string, charset
(UTF8
)] char * pvReserved8
;
874 DNS_RPC_ZONE_CREATE_INFO_W2K
;
877 DWORD dwRpcStructureVersion
;
880 [string, charset
(UTF8
)] char * pszZoneName
;
888 [string, charset
(UTF8
)] char * pszDataFile
;
892 /* Admin name (if auto-create SOA) */
894 [string, charset
(UTF8
)] char * pszAdmin
;
896 /* Masters (if secondary) */
898 PIP4_ARRAY aipMasters
;
902 PIP4_ARRAY aipSecondaries
;
903 DWORD fSecureSecondaries
;
906 /* Forwarder zones */
909 DWORD fRecurseAfterForwarding
;
911 /* Directory partition */
913 DWORD dwDpFlags
; /* specify built-in DP or */
914 [string, charset
(UTF8
)] char * pszDpFqdn
; /* UTF8 FQDN of partition */
916 DWORD dwReserved
[ 32 ];
918 DNS_RPC_ZONE_CREATE_INFO_DOTNET
;
922 DWORD dwRpcStructureVersion
;
925 [string, charset
(UTF8
)] char * pszZoneName
;
933 [string, charset
(UTF8
)] char * pszDataFile
;
937 /* Admin name (if auto-create SOA) */
939 [string, charset
(UTF8
)] char * pszAdmin
;
941 /* Masters (if secondary) */
943 PDNS_ADDR_ARRAY aipMasters
;
947 PDNS_ADDR_ARRAY aipSecondaries
;
948 DWORD fSecureSecondaries
;
951 /* Forwarder zones */
954 DWORD fRecurseAfterForwarding
;
956 /* Directory partition */
958 DWORD dwDpFlags
; /* specify built-in DP or */
959 [string, charset
(UTF8
)] char * pszDpFqdn
; /* UTF8 FQDN of partition */
961 DWORD dwReserved
[ 32 ];
963 DNS_RPC_ZONE_CREATE_INFO_LONGHORN
;
964 #define DNS_RPC_ZONE_CREATE_INFO DNS_RPC_ZONE_CREATE_INFO_LONGHORN
967 DWORD dwRpcStructureVersion
;
970 DWORD dwAutoConfigFlags
;
972 [string, charset
(UTF8
)] char * pszNewDomainName
;
974 DNS_RPC_AUTOCONFIGURE
;
977 /* EnumZones2 filter specification */
980 DWORD dwRpcStructureVersion
;
984 [string, charset
(UTF8
)] char * pszPartitionFqdn
;
985 [string, charset
(UTF8
)] char * pszQueryString
;
987 DNS_EXTENSION pszReserved
[ 6 ];
989 DNS_RPC_ENUM_ZONES_FILTER
;
992 /* RPC record structure */
996 [value
(strlen
(str
))] uint8 len
;
997 [charset
(UTF8
)] uint8 str
[len
];
1000 typedef [nodiscriminant
,gensize
,flag
(NDR_NOALIGN
)] union {
1001 [case(DNS_TYPE_PTR
)] DNS_RPC_NAME name
;
1002 [case(DNS_TYPE_NS
)] DNS_RPC_NAME name
;
1003 [case(DNS_TYPE_CNAME
)] DNS_RPC_NAME name
;
1004 [case(DNS_TYPE_DNAME
)] DNS_RPC_NAME name
;
1005 [case(DNS_TYPE_MB
)] DNS_RPC_NAME name
;
1006 [case(DNS_TYPE_MR
)] DNS_RPC_NAME name
;
1007 [case(DNS_TYPE_MG
)] DNS_RPC_NAME name
;
1008 [case(DNS_TYPE_MD
)] DNS_RPC_NAME name
;
1009 [case(DNS_TYPE_MF
)] DNS_RPC_NAME name
;
1013 [value
(ndr_size_DNS_RPC_DATA
(&data
,wType
,ndr
->flags
))] uint16 wDataLength
;
1014 dns_record_type wType
;
1020 [subcontext
(0),subcontext_size
(wDataLength
),switch_is(wType
)] DNS_RPC_DATA data
;
1024 [value
(ndr_size_DNS_RPC_DATA
(&rec.data
,rec.wType
,ndr
->flags
))] uint3264 wContextLength
;
1026 } DNS_RPC_RECORD_BUF
;
1030 /* These RPC structures have no version because they are simple */
1031 /* are they are explicitly defined by their names. */
1036 [string, charset
(UTF8
)] char * pszNodeName
;
1038 DNS_RPC_NAME_AND_PARAM
;
1041 DWORD dwRpcStructureVersion
;
1046 [string, charset
(UTF8
)] char * pszContextName
;
1047 PDNS_ADDR_ARRAY aipValidateAddrs
;
1049 DNS_RPC_IP_VALIDATE
;
1055 [range(0,10000)] DWORD dwCount
;
1056 [size_is(dwCount
),string,charset
(UTF8
)] char * pszStrings
[];
1057 } DNS_RPC_UTF8_STRING_LIST
;
1060 /* Union of RPC types */
1062 typedef [v1_enum] enum {
1063 DNSSRV_TYPEID_NULL
= 0,
1064 DNSSRV_TYPEID_DWORD
= 1,
1065 DNSSRV_TYPEID_LPSTR
= 2,
1066 DNSSRV_TYPEID_LPWSTR
= 3,
1067 DNSSRV_TYPEID_IPARRAY
= 4,
1068 DNSSRV_TYPEID_BUFFER
= 5,
1069 DNSSRV_TYPEID_SERVER_INFO_W2K
= 6,
1070 DNSSRV_TYPEID_STATS
= 7,
1071 DNSSRV_TYPEID_FORWARDERS_W2K
= 8,
1072 DNSSRV_TYPEID_ZONE_W2K
= 9,
1073 DNSSRV_TYPEID_ZONE_INFO_W2K
= 10,
1074 DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
= 11,
1075 DNSSRV_TYPEID_ZONE_DATABASE_W2K
= 12,
1076 DNSSRV_TYPEID_ZONE_TYPE_RESET_W2K
= 13,
1077 DNSSRV_TYPEID_ZONE_CREATE_W2K
= 14,
1078 DNSSRV_TYPEID_NAME_AND_PARAM
= 15,
1079 DNSSRV_TYPEID_ZONE_LIST_W2K
= 16,
1080 DNSSRV_TYPEID_ZONE_RENAME
= 17,
1081 DNSSRV_TYPEID_ZONE_EXPORT
= 18,
1082 DNSSRV_TYPEID_SERVER_INFO_DOTNET
= 19,
1083 DNSSRV_TYPEID_FORWARDERS_DOTNET
= 20,
1084 DNSSRV_TYPEID_ZONE
= 21,
1085 DNSSRV_TYPEID_ZONE_INFO_DOTNET
= 22,
1086 DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
= 23,
1087 DNSSRV_TYPEID_ZONE_DATABASE
= 24,
1088 DNSSRV_TYPEID_ZONE_TYPE_RESET_DOTNET
= 25,
1089 DNSSRV_TYPEID_ZONE_CREATE_DOTNET
= 26,
1090 DNSSRV_TYPEID_ZONE_LIST
= 27,
1091 DNSSRV_TYPEID_DP_ENUM
= 28,
1092 DNSSRV_TYPEID_DP_INFO
= 29,
1093 DNSSRV_TYPEID_DP_LIST
= 30,
1094 DNSSRV_TYPEID_ENLIST_DP
= 31,
1095 DNSSRV_TYPEID_ZONE_CHANGE_DP
= 32,
1096 DNSSRV_TYPEID_ENUM_ZONES_FILTER
= 33,
1097 DNSSRV_TYPEID_ADDRARRAY
= 34,
1098 DNSSRV_TYPEID_SERVER_INFO
= 35,
1099 DNSSRV_TYPEID_ZONE_INFO
= 36,
1100 DNSSRV_TYPEID_FORWARDERS
= 37,
1101 DNSSRV_TYPEID_ZONE_SECONDARIES
= 38,
1102 DNSSRV_TYPEID_ZONE_TYPE_RESET
= 39,
1103 DNSSRV_TYPEID_ZONE_CREATE
= 40,
1104 DNSSRV_TYPEID_IP_VALIDATE
= 41,
1105 DNSSRV_TYPEID_AUTOCONFIGURE
= 42,
1106 DNSSRV_TYPEID_UTF8_STRING_LIST
= 43,
1107 DNSSRV_TYPEID_UNICODE_STRING_LIST
= 44
1111 typedef [switch_type(uint3264
)] union {
1112 [case(DNSSRV_TYPEID_NULL
)] PBYTE Null
;
1114 [case(DNSSRV_TYPEID_DWORD
)] DWORD Dword
;
1116 [case(DNSSRV_TYPEID_LPSTR
)] [string, charset
(UTF8
)] char * String;
1118 [case(DNSSRV_TYPEID_LPWSTR
)] [string, charset
(UTF16
)] wchar_t * WideString
;
1120 [case(DNSSRV_TYPEID_IPARRAY
)] IP4_ARRAY
*IpArray
;
1122 [case(DNSSRV_TYPEID_BUFFER
)]
1123 DNS_RPC_BUFFER
*Buffer
;
1125 [case(DNSSRV_TYPEID_SERVER_INFO_W2K
)]
1126 DNS_RPC_SERVER_INFO_W2K
*ServerInfoW2K
;
1128 [case(DNSSRV_TYPEID_STATS
)]
1131 [case(DNSSRV_TYPEID_FORWARDERS_W2K
)]
1132 DNS_RPC_FORWARDERS_W2K
*ForwardersW2K
;
1134 [case(DNSSRV_TYPEID_ZONE_W2K
)]
1135 DNS_RPC_ZONE_W2K
*ZoneW2K
;
1137 [case(DNSSRV_TYPEID_ZONE_INFO_W2K
)]
1138 DNS_RPC_ZONE_INFO_W2K
*ZoneInfoW2K
;
1140 [case(DNSSRV_TYPEID_ZONE_SECONDARIES_W2K
)]
1141 DNS_RPC_ZONE_SECONDARIES_W2K
*SecondariesW2K
;
1143 [case(DNSSRV_TYPEID_ZONE_DATABASE_W2K
)]
1144 DNS_RPC_ZONE_DATABASE_W2K
*DatabaseW2K
;
1146 [case(DNSSRV_TYPEID_ZONE_CREATE_W2K
)]
1147 DNS_RPC_ZONE_CREATE_INFO_W2K
*ZoneCreateW2K
;
1149 [case(DNSSRV_TYPEID_NAME_AND_PARAM
)]
1150 DNS_RPC_NAME_AND_PARAM
*NameAndParam
;
1152 [case(DNSSRV_TYPEID_ZONE_LIST_W2K
)]
1153 DNS_RPC_ZONE_LIST_W2K
*ZoneListW2K
;
1155 [case(DNSSRV_TYPEID_SERVER_INFO_DOTNET
)]
1156 DNS_RPC_SERVER_INFO_DOTNET
*ServerInfoDotNet
;
1158 [case(DNSSRV_TYPEID_FORWARDERS_DOTNET
)]
1159 DNS_RPC_FORWARDERS_DOTNET
*ForwardersDotNet
;
1161 [case(DNSSRV_TYPEID_ZONE
)]
1164 [case(DNSSRV_TYPEID_ZONE_INFO_DOTNET
)]
1165 DNS_RPC_ZONE_INFO_DOTNET
*ZoneInfoDotNet
;
1167 [case(DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET
)]
1168 DNS_RPC_ZONE_SECONDARIES_DOTNET
*SecondariesDotNet
;
1170 [case(DNSSRV_TYPEID_ZONE_DATABASE
)]
1171 DNS_RPC_ZONE_DATABASE
*Database
;
1173 [case(DNSSRV_TYPEID_ZONE_CREATE_DOTNET
)]
1174 DNS_RPC_ZONE_CREATE_INFO_DOTNET
*ZoneCreateDotNet
;
1176 [case(DNSSRV_TYPEID_ZONE_LIST
)]
1177 DNS_RPC_ZONE_LIST
*ZoneList
;
1179 [case(DNSSRV_TYPEID_ZONE_EXPORT
)]
1180 DNS_RPC_ZONE_EXPORT_INFO
*ZoneExport
;
1182 [case(DNSSRV_TYPEID_DP_INFO
)]
1183 DNS_RPC_DP_INFO
*DirectoryPartition
;
1185 [case(DNSSRV_TYPEID_DP_ENUM
)]
1186 DNS_RPC_DP_ENUM
*DirectoryPartitionEnum
;
1188 [case(DNSSRV_TYPEID_DP_LIST
)]
1189 DNS_RPC_DP_LIST
*DirectoryPartitionList
;
1191 [case(DNSSRV_TYPEID_ENLIST_DP
)]
1192 DNS_RPC_ENLIST_DP
*EnlistDirectoryPartition
;
1194 [case(DNSSRV_TYPEID_ZONE_CHANGE_DP
)]
1195 DNS_RPC_ZONE_CHANGE_DP
*ZoneChangeDirectoryPartition
;
1197 [case(DNSSRV_TYPEID_ENUM_ZONES_FILTER
)]
1198 DNS_RPC_ENUM_ZONES_FILTER
*EnumZonesFilter
;
1200 [case(DNSSRV_TYPEID_ADDRARRAY
)]
1201 DNS_ADDR_ARRAY
*AddrArray
;
1203 [case(DNSSRV_TYPEID_SERVER_INFO
)]
1204 DNS_RPC_SERVER_INFO
*ServerInfo
;
1206 [case(DNSSRV_TYPEID_ZONE_CREATE
)]
1207 DNS_RPC_ZONE_CREATE_INFO
*ZoneCreate
;
1209 [case(DNSSRV_TYPEID_FORWARDERS
)]
1210 DNS_RPC_FORWARDERS
*Forwarders
;
1212 [case(DNSSRV_TYPEID_ZONE_SECONDARIES
)]
1213 DNS_RPC_ZONE_SECONDARIES
*Secondaries
;
1215 [case(DNSSRV_TYPEID_IP_VALIDATE
)]
1216 DNS_RPC_IP_VALIDATE
*IpValidate
;
1218 [case(DNSSRV_TYPEID_ZONE_INFO
)]
1219 DNS_RPC_ZONE_INFO
*ZoneInfo
;
1221 [case(DNSSRV_TYPEID_AUTOCONFIGURE
)]
1222 DNS_RPC_AUTOCONFIGURE
*AutoConfigure
;
1224 [case(DNSSRV_TYPEID_UTF8_STRING_LIST
)]
1225 DNS_RPC_UTF8_STRING_LIST
*Utf8StringList
;
1229 NTSTATUS DnssrvOperation
(
1230 [in,unique,string,charset
(UTF16
)] uint16
*pwszServerName
,
1231 [in,unique,string,charset
(UTF8
)] uint8
*pszZone
,
1232 [in] DWORD dwContext
,
1233 [in,unique,string,charset
(UTF8
)] uint8
*pszOperation
,
1234 [in] DNS_RPC_TYPEID dwTypeId
,
1235 [in, switch_is(dwTypeId
)] DNSSRV_RPC_UNION pData
1238 NTSTATUS DnssrvQuery
(
1239 [in,unique,string,charset
(UTF16
)] uint16
*pwszServerName
,
1240 [in,unique,string,charset
(UTF8
)] uint8
*pszZone
,
1241 [in,unique,string,charset
(UTF8
)] uint8
*pszOperation
,
1242 [out] DNS_RPC_TYPEID
*pdwTypeId
,
1243 [out, switch_is(*pdwTypeId
)] DNSSRV_RPC_UNION
*ppData
1246 NTSTATUS DnssrvComplexOperation
(
1247 [in,unique,string,charset
(UTF16
)] uint16
*pwszServerName
,
1248 [in,unique,string,charset
(UTF8
)] uint8
*pszZone
,
1249 [in,unique,string,charset
(UTF8
)] uint8
*pszOperation
,
1250 [in] DNS_RPC_TYPEID dwTypeIn
,
1251 [in, switch_is(dwTypeIn
)] DNSSRV_RPC_UNION pDataIn
,
1252 [out] DNS_RPC_TYPEID
*pdwTypeOut
,
1253 [out, switch_is(*pdwTypeOut
)] DNSSRV_RPC_UNION
*ppDataOut
1256 NTSTATUS DnssrvEnumRecords
(
1257 [in,unique,string,charset
(UTF16
)] uint16
*pwszServerName
,
1258 [in,unique,string,charset
(UTF8
)] uint8
*pszZone
,
1259 [in,unique,string,charset
(UTF8
)] uint8
*pszNodeName
,
1260 [in,unique,string,charset
(UTF8
)] uint8
*pszStartChild
,
1261 [in] dns_record_type wRecordType
,
1262 [in] DWORD fSelectFlag
,
1263 [in,unique,string,charset
(UTF8
)] uint8
*pszFilterStart
,
1264 [in,unique,string,charset
(UTF8
)] uint8
*pszFilterStop
,
1265 [out] DWORD
*pdwBufferLength
,
1266 [out, size_is(, *pdwBufferLength
)] PBYTE
* ppBuffer
1269 NTSTATUS DnssrvUpdateRecord
(
1270 [in,unique,string,charset
(UTF16
)] uint16
*pwszServerName
,
1271 [in,unique,string,charset
(UTF8
)] uint8
*pszZone
,
1272 [in,unique,string,charset
(UTF8
)] uint8
*pszNodeName
,
1273 [in, unique] DNS_RPC_RECORD_BUF
*pAddRecord
,
1274 [in, unique] DNS_RPC_RECORD_BUF
*DeleteRecord
1277 NTSTATUS DnssrvOperation2
(
1278 [in] uint32 dwClientVersion
,
1279 [in] uint32 dwSettingFlags
,
1280 [in,unique,string,charset
(UTF16
)] uint16
*pwszServerName
,
1281 [in,unique,string,charset
(UTF8
)] uint8
*pszZone
,
1282 [in] DWORD dwContext
,
1283 [in,unique,string,charset
(UTF8
)] uint8
*pszOperation
,
1284 [in] DNS_RPC_TYPEID dwTypeId
,
1285 [in, switch_is(dwTypeId
)] DNSSRV_RPC_UNION pData
1288 NTSTATUS DnssrvQuery2
(
1289 [in] uint32 dwClientVersion
,
1290 [in] uint32 dwSettingFlags
,
1291 [in,unique,string,charset
(UTF16
)] uint16
*pwszServerName
,
1292 [in,unique,string,charset
(UTF8
)] uint8
*pszZone
,
1293 [in,unique,string,charset
(UTF8
)] uint8
*pszOperation
,
1294 [out] DNS_RPC_TYPEID
*pdwTypeId
,
1295 [out, switch_is(*pdwTypeId
)] DNSSRV_RPC_UNION
*ppData
1298 NTSTATUS DnssrvComplexOperation2
(
1299 [in] uint32 dwClientVersion
,
1300 [in] uint32 dwSettingFlags
,
1301 [in,unique,string,charset
(UTF16
)] uint16
*pwszServerName
,
1302 [in,unique,string,charset
(UTF8
)] uint8
*pszZone
,
1303 [in,unique,string,charset
(UTF8
)] uint8
*pszOperation
,
1304 [in] DNS_RPC_TYPEID dwTypeIn
,
1305 [in, switch_is(dwTypeIn
)] DNSSRV_RPC_UNION pDataIn
,
1306 [out] DNS_RPC_TYPEID
*pdwTypeOut
,
1307 [out, switch_is(*pdwTypeOut
)] DNSSRV_RPC_UNION
*ppDataOut
1312 uint16 wRecordCount
;
1314 uint32 dwChildCount
;
1315 DNS_RPC_NAME dnsNodeName
;
1316 DNS_RPC_RECORD records
[wRecordCount
];
1319 NTSTATUS DnssrvEnumRecords2
(
1320 [in] DWORD dwClientVersion
,
1321 [in] DWORD dwSettingFlags
,
1322 [in,unique,string,charset
(UTF16
)] uint16
*pwszServerName
,
1323 [in,unique,string,charset
(UTF8
)] uint8
*pszZone
,
1324 [in,unique,string,charset
(UTF8
)] uint8
*pszNodeName
,
1325 [in,unique,string,charset
(UTF8
)] uint8
*pszStartChild
,
1326 [in] dns_record_type wRecordType
,
1327 [in] DWORD fSelectFlag
,
1328 [in,unique,string,charset
(UTF8
)] uint8
*pszFilterStart
,
1329 [in,unique,string,charset
(UTF8
)] uint8
*pszFilterStop
,
1330 [out] uint32
*pdwBufferLength
,
1331 [out,unique,subcontext
(4),subcontext_size
(*pdwBufferLength
)] DNS_RPC_RECORDS
*pBuffer
1334 NTSTATUS DnssrvUpdateRecord2
(
1335 [in] uint32 dwClientVersion
,
1336 [in] uint32 dwSettingFlags
,
1337 [in,unique,string,charset
(UTF16
)] uint16
*pwszServerName
,
1338 [in,unique,string,charset
(UTF8
)] uint8
*pszZone
,
1339 [in,string,charset
(UTF8
)] uint8
*pszNodeName
,
1340 [in, unique] DNS_RPC_RECORD_BUF
*pAddRecord
,
1341 [in, unique] DNS_RPC_RECORD_BUF
*DeleteRecord