source: vendor/w32api/3.6/include/windns.h

Last change on this file was 2720, checked in by bird, 19 years ago

w32api v3.6

File size: 9.7 KB
Line 
1#ifndef _WINDNS_H
2#define _WINDNS_H
3#if __GNUC__ >= 3
4#pragma GCC system_header
5#endif
6
7#ifdef __cplusplus
8extern "C" {
9#endif
10
11#define DNS_QUERY_STANDARD 0x0
12#define DNS_QUERY_ACCEPT_TRUNCATED_RESPONSE 0x1
13#define DNS_QUERY_USE_TCP_ONLY 0x2
14#define DNS_QUERY_NO_RECURSION 0x4
15#define DNS_QUERY_BYPASS_CACHE 0x8
16#define DNS_QUERY_NO_WIRE_QUERY 0x10
17#define DNS_QUERY_NO_LOCAL_NAME 0x20
18#define DNS_QUERY_NO_HOSTS_FILE 0x40
19#define DNS_QUERY_NO_NETBT 0x80
20#define DNS_QUERY_TREAT_AS_FQDN 0x1000
21#define DNS_QUERY_WIRE_ONLY 0x100
22#define DNS_QUERY_RETURN_MESSAGE 0x200
23#define DNS_QUERY_DONT_RESET_TTL_VALUES 0x100000
24#define DNS_QUERY_RESERVED 0xff000000
25
26#define DNS_UPDATE_SECURITY_USE_DEFAULT 0x0
27#define DNS_UPDATE_SECURITY_OFF 0x10
28#define DNS_UPDATE_SECURITY_ON 0x20
29#define DNS_UPDATE_SECURITY_ONLY 0x100
30#define DNS_UPDATE_CACHE_SECURITY_CONTEXT 0x200
31#define DNS_UPDATE_TEST_USE_LOCAL_SYS_ACCT 0x400
32#define DNS_UPDATE_FORCE_SECURITY_NEGO 0x800
33#define DNS_UPDATE_RESERVED 0xffff0000
34
35#ifndef RC_INVOKE
36typedef DWORD IP4_ADDRESS;
37typedef DWORD DNS_STATUS;
38enum {
39 DNS_TYPE_A=1,
40 DNS_TYPE_NS,
41 DNS_TYPE_MD,
42 DNS_TYPE_MF,
43 DNS_TYPE_CNAME,
44 DNS_TYPE_SOA,
45 DNS_TYPE_MB,
46 DNS_TYPE_MG,
47 DNS_TYPE_MR,
48 DNS_TYPE_NULL,
49 DNS_TYPE_WKS,
50 DNS_TYPE_PTR,
51 DNS_TYPE_HINFO,
52 DNS_TYPE_MINFO,
53 DNS_TYPE_MX,
54 DNS_TYPE_TEXT
55};
56typedef enum _DNS_CHARSET
57{
58 DnsCharSetUnknown,
59 DnsCharSetUnicode,
60 DnsCharSetUtf8,
61 DnsCharSetAnsi
62} DNS_CHARSET;
63typedef enum
64{
65 DnsConfigPrimaryDomainName_W,
66 DnsConfigPrimaryDomainName_A,
67 DnsConfigPrimaryDomainName_UTF8,
68 DnsConfigAdapterDomainName_W,
69 DnsConfigAdapterDomainName_A,
70 DnsConfigAdapterDomainName_UTF8,
71 DnsConfigDnsServerList,
72 DnsConfigSearchList,
73 DnsConfigAdapterInfo,
74 DnsConfigPrimaryHostNameRegistrationEnabled,
75 DnsConfigAdapterHostNameRegistrationEnabled,
76 DnsConfigAddressRegistrationMaxCount,
77 DnsConfigHostName_W,
78 DnsConfigHostName_A,
79 DnsConfigHostName_UTF8,
80 DnsConfigFullHostName_W,
81 DnsConfigFullHostName_A,
82 DnsConfigFullHostName_UTF8
83} DNS_CONFIG_TYPE;
84typedef enum
85{
86 DnsFreeFlat = 0,
87 DnsFreeRecordList,
88 DnsFreeParsedMessageFields
89} DNS_FREE_TYPE;
90typedef enum _DNS_NAME_FORMAT
91{
92 DnsNameDomain,
93 DnsNameDomainLabel,
94 DnsNameHostnameFull,
95 DnsNameHostnameLabel,
96 DnsNameWildcard,
97 DnsNameSrvRecord
98} DNS_NAME_FORMAT;
99typedef enum
100{
101 DnsSectionQuestion,
102 DnsSectionAnswer,
103 DnsSectionAuthority,
104 DnsSectionAdditional
105} DNS_SECTION;
106typedef struct _IP4_ARRAY {
107 DWORD AddrCount;
108 IP4_ADDRESS AddrArray[1];
109} IP4_ARRAY, *PIP4_ARRAY;
110typedef struct {
111 DWORD IP6Dword[4];
112} IP6_ADDRESS, *PIP6_ADDRESS, DNS_IP6_ADDRESS, *PDNS_IP6_ADDRESS;
113typedef struct _DNS_HEADER {
114 WORD Xid;
115 BYTE RecursionDesired;
116 BYTE Truncation;
117 BYTE Authoritative;
118 BYTE Opcode;
119 BYTE IsResponse;
120 BYTE ResponseCode;
121 BYTE Reserved;
122 BYTE RecursionAvailable;
123 WORD QuestionCount;
124 WORD AnswerCount;
125 WORD NameServerCount;
126 WORD AdditionalCount;
127} DNS_HEADER, *PDNS_HEADER;
128typedef struct _DNS_MESSAGE_BUFFER {
129 DNS_HEADER MessageHead;
130 CHAR MessageBody[1];
131} DNS_MESSAGE_BUFFER, *PDNS_MESSAGE_BUFFER;
132typedef struct _DnsRecordFlags {
133 DWORD Section :2;
134 DWORD Delete :1;
135 DWORD CharSet :2;
136 DWORD Unused :3;
137 DWORD Reserved :24;
138} DNS_RECORD_FLAGS;
139#define DNSREC_QUESTION 0
140#define DNSREC_ANSWER 1
141#define DNSREC_AUTHORITY 2
142#define DNSREC_ADDITIONAL 3
143typedef struct {
144 IP4_ADDRESS IpAddress;
145} DNS_A_DATA, *PDNS_A_DATA;
146typedef struct {
147 DNS_IP6_ADDRESS Ip6Address;
148} DNS_AAAA_DATA, *PDNS_AAAA_DATA;
149#define DNS_ATMA_MAX_ADDR_LENGTH 20
150typedef struct {
151 BYTE AddressType;
152 BYTE Address[DNS_ATMA_MAX_ADDR_LENGTH];
153} DNS_ATMA_DATA, *PDNS_ATMA_DATA;
154typedef struct {
155 WORD wFlags;
156 BYTE chProtocol;
157 BYTE chAlgorithm;
158 BYTE Key[1];
159} DNS_KEY_DATA, *PDNS_KEY_DATA;
160typedef struct {
161 WORD wVersion;
162 WORD wSize;
163 WORD wHorPrec;
164 WORD wVerPrec;
165 DWORD dwLatitude;
166 DWORD dwLongitude;
167 DWORD dwAltitude;
168} DNS_LOC_DATA, *PDNS_LOC_DATA;
169typedef struct {
170 LPTSTR pNameMailbox;
171 LPTSTR pNameErrorsMailbox;
172} DNS_MINFO_DATA, *PDNS_MINFO_DATA;
173typedef struct {
174 LPTSTR pNameExchange;
175 WORD wPreference;
176 WORD Pad;
177} DNS_MX_DATA, *PDNS_MX_DATA;
178typedef struct {
179 DWORD dwByteCount;
180 BYTE Data[1];
181} DNS_NULL_DATA, *PDNS_NULL_DATA;
182typedef struct {
183 LPTSTR pNameNext;
184 WORD wNumTypes;
185 WORD wTypes[1];
186} DNS_NXT_DATA, *PDNS_NXT_DATA;
187typedef struct {
188 LPTSTR pNameHost;
189} DNS_PTR_DATA, *PDNS_PTR_DATA;
190typedef struct {
191 LPTSTR pNameSigner;
192 WORD wTypeCovered;
193 BYTE chAlgorithm;
194 BYTE chLabelCount;
195 DWORD dwOriginalTtl;
196 DWORD dwExpiration;
197 DWORD dwTimeSigned;
198 WORD wKeyTag;
199 WORD Pad;
200 BYTE Signature[1];
201} DNS_SIG_DATA, *PDNS_SIG_DATA;
202typedef struct {
203 LPTSTR pNamePrimaryServer;
204 LPTSTR pNameAdministrator;
205 DWORD dwSerialNo;
206 DWORD dwRefresh;
207 DWORD dwRetry;
208 DWORD dwExpire;
209 DWORD dwDefaultTtl;
210} DNS_SOA_DATA, *PDNS_SOA_DATA;
211typedef struct {
212 LPTSTR pNameTarget;
213 WORD wPriority;
214 WORD wWeight;
215 WORD wPort;
216 WORD Pad;
217} DNS_SRV_DATA, *PDNS_SRV_DATA;
218typedef struct {
219 DWORD dwStringCount;
220 LPTSTR pStringArray[1];
221} DNS_TXT_DATA, *PDNS_TXT_DATA;
222typedef struct {
223 LPTSTR pNameAlgorithm;
224 PBYTE pAlgorithmPacket;
225 PBYTE pKey;
226 PBYTE pOtherData;
227 DWORD dwCreateTime;
228 DWORD dwExpireTime;
229 WORD wMode;
230 WORD wError;
231 WORD wKeyLength;
232 WORD wOtherLength;
233 UCHAR cAlgNameLength;
234 BOOL bPacketPointers;
235} DNS_TKEY_DATA, *PDNS_TKEY_DATA;
236typedef struct {
237 LPTSTR pNameAlgorithm;
238 PBYTE pAlgorithmPacket;
239 PBYTE pSignature;
240 PBYTE pOtherData;
241 LONGLONG i64CreateTime;
242 WORD wFudgeTime;
243 WORD wOriginalXid;
244 WORD wError;
245 WORD wSigLength;
246 WORD wOtherLength;
247 UCHAR cAlgNameLength;
248 BOOL bPacketPointers;
249} DNS_TSIG_DATA, *PDNS_TSIG_DATA;
250typedef struct {
251 DWORD dwMappingFlag;
252 DWORD dwLookupTimeout;
253 DWORD dwCacheTimeout;
254 DWORD cWinsServerCount;
255 IP4_ADDRESS WinsServers[1];
256} DNS_WINS_DATA, *PDNS_WINS_DATA;
257typedef struct {
258 DWORD dwMappingFlag;
259 DWORD dwLookupTimeout;
260 DWORD dwCacheTimeout;
261 LPTSTR pNameResultDomain;
262} DNS_WINSR_DATA, *PDNS_WINSR_DATA;
263typedef struct _DNS_WIRE_QUESTION {
264 WORD QuestionType;
265 WORD QuestionClass;
266} DNS_WIRE_QUESTION, *PDNS_WIRE_QUESTION;
267typedef struct _DNS_WIRE_RECORD {
268 WORD RecordType;
269 WORD RecordClass;
270 DWORD TimeToLive;
271 WORD DataLength;
272} DNS_WIRE_RECORD, *PDNS_WIRE_RECORD;
273typedef struct {
274 IP4_ADDRESS IpAddress;
275 UCHAR chProtocol;
276 BYTE BitMask[1];
277} DNS_WKS_DATA, *PDNS_WKS_DATA;
278typedef struct _DnsRecord {
279 struct _DnsRecord* pNext;
280 LPTSTR pName;
281 WORD wType;
282 WORD wDataLength;
283 union {
284 DWORD DW;
285 DNS_RECORD_FLAGS S;
286 } Flags;
287 DWORD dwTtl;
288 DWORD dwReserved;
289 union {
290 DNS_A_DATA A;
291 DNS_SOA_DATA SOA, Soa;
292 DNS_PTR_DATA PTR, Ptr, NS, Ns, CNAME, Cname, MB, Mb,
293 MD, Md, MF, Mf, MG, Mg, MR, Mr;
294 DNS_MINFO_DATA MINFO, Minfo, RP, Rp;
295 DNS_MX_DATA MX, Mx, AFSDB, Afsdb, RT, Rt;
296 DNS_TXT_DATA HINFO, Hinfo, ISDN, Isdn, TXT, Txt, X25;
297 DNS_NULL_DATA Null;
298 DNS_WKS_DATA WKS, Wks;
299 DNS_AAAA_DATA AAAA;
300 DNS_KEY_DATA KEY, Key;
301 DNS_SIG_DATA SIG, Sig;
302 DNS_ATMA_DATA ATMA, Atma;
303 DNS_NXT_DATA NXT, Nxt;
304 DNS_SRV_DATA SRV, Srv;
305 DNS_TKEY_DATA TKEY, Tkey;
306 DNS_TSIG_DATA TSIG, Tsig;
307 DNS_WINS_DATA WINS, Wins;
308 DNS_WINSR_DATA WINSR, WinsR, NBSTAT, Nbstat;
309 } Data;
310} DNS_RECORD, *PDNS_RECORD;
311typedef struct _DnsRRSet {
312 PDNS_RECORD pFirstRR;
313 PDNS_RECORD pLastRR;
314} DNS_RRSET, *PDNS_RRSET;
315
316DNS_STATUS WINAPI DnsAcquireContextHandle_A(DWORD,PVOID,HANDLE*);
317DNS_STATUS WINAPI DnsAcquireContextHandle_W(DWORD,PVOID,HANDLE*);
318DNS_STATUS WINAPI DnsExtractRecordsFromMessage_W(PDNS_MESSAGE_BUFFER,WORD,PDNS_RECORD*);
319DNS_STATUS WINAPI DnsExtractRecordsFromMessage_UTF8(PDNS_MESSAGE_BUFFER,WORD,PDNS_RECORD*);
320DNS_STATUS WINAPI DnsModifyRecordsInSet_A(PDNS_RECORD,PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
321DNS_STATUS WINAPI DnsModifyRecordsInSet_W(PDNS_RECORD,PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
322DNS_STATUS WINAPI DnsModifyRecordsInSet_UTF8(PDNS_RECORD,PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
323BOOL WINAPI DnsNameCompare_A(LPSTR,LPSTR);
324BOOL WINAPI DnsNameCompare_W(LPWSTR,LPWSTR);
325DNS_STATUS WINAPI DnsQuery_A(PCSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*);
326DNS_STATUS WINAPI DnsQuery_W(PCWSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*);
327DNS_STATUS WINAPI DnsQuery_UTF8(PCSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*);
328DNS_STATUS WINAPI DnsQueryConfig(DNS_CONFIG_TYPE,DWORD,PWSTR,PVOID,PVOID,PDWORD);
329BOOL WINAPI DnsRecordCompare(PDNS_RECORD,PDNS_RECORD);
330PDNS_RECORD WINAPI DnsRecordCopyEx(PDNS_RECORD,DNS_CHARSET,DNS_CHARSET);
331void WINAPI DnsRecordListFree(PDNS_RECORD,DNS_FREE_TYPE);
332BOOL WINAPI DnsRecordSetCompare(PDNS_RECORD,PDNS_RECORD,PDNS_RECORD*,PDNS_RECORD*);
333PDNS_RECORD WINAPI DnsRecordSetCopyEx(PDNS_RECORD,DNS_CHARSET,DNS_CHARSET);
334PDNS_RECORD WINAPI DnsRecordSetDetach(PDNS_RECORD);
335void WINAPI DnsReleaseContextHandle(HANDLE);
336DNS_STATUS WINAPI DnsReplaceRecordSetA(PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
337DNS_STATUS WINAPI DnsReplaceRecordSetW(PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
338DNS_STATUS WINAPI DnsReplaceRecordSetUTF8(PDNS_RECORD,DWORD,HANDLE,PIP4_ARRAY,PVOID);
339DNS_STATUS WINAPI DnsValidateName_A(LPCSTR,DNS_NAME_FORMAT);
340DNS_STATUS WINAPI DnsValidateName_W(LPCWSTR, DNS_NAME_FORMAT);
341DNS_STATUS WINAPI DnsValidateName_UTF8(LPCSTR,DNS_NAME_FORMAT);
342BOOL WINAPI DnsWriteQuestionToBuffer_W(PDNS_MESSAGE_BUFFER,LPDWORD,LPWSTR,WORD,WORD,BOOL);
343BOOL WINAPI DnsWriteQuestionToBuffer_UTF8(PDNS_MESSAGE_BUFFER,LPDWORD,LPSTR,WORD,WORD,BOOL);
344
345#ifdef UNICODE
346#define DnsAcquireContextHandle DnsAcquireContextHandle_W
347#define DnsModifyRecordsInSet DnsModifyRecordsInSet_W
348#define DnsNameCompare DnsNameCompare_W
349#define DnsQuery DnsQuery_W
350#define DnsReplaceRecordSet DnsReplaceRecordSetW
351#define DnsValidateName DnsValidateName_W
352#else
353#define DnsAcquireContextHandle DnsAcquireContextHandle_A
354#define DnsModifyRecordsInSet DnsModifyRecordsInSet_A
355#define DnsNameCompare DnsNameCompare_A
356#define DnsQuery DnsQuery_A
357#define DnsReplaceRecordSet DnsReplaceRecordSetA
358#define DnsValidateName DnsValidateName_A
359#endif
360
361#endif /* RC_INVOKED */
362
363#ifdef __cplusplus
364}
365#endif
366
367#endif /* _WINDNS_H */
Note: See TracBrowser for help on using the repository browser.