📄 windns.pas
字号:
DNS_TYPE_HINFO = $000d; // 13
{$EXTERNALSYM DNS_TYPE_HINFO}
DNS_TYPE_MINFO = $000e; // 14
{$EXTERNALSYM DNS_TYPE_MINFO}
DNS_TYPE_MX = $000f; // 15
{$EXTERNALSYM DNS_TYPE_MX}
DNS_TYPE_TEXT = $0010; // 16
{$EXTERNALSYM DNS_TYPE_TEXT}
// RFC 1183
DNS_TYPE_RP = $0011; // 17
{$EXTERNALSYM DNS_TYPE_RP}
DNS_TYPE_AFSDB = $0012; // 18
{$EXTERNALSYM DNS_TYPE_AFSDB}
DNS_TYPE_X25 = $0013; // 19
{$EXTERNALSYM DNS_TYPE_X25}
DNS_TYPE_ISDN = $0014; // 20
{$EXTERNALSYM DNS_TYPE_ISDN}
DNS_TYPE_RT = $0015; // 21
{$EXTERNALSYM DNS_TYPE_RT}
// RFC 1348
DNS_TYPE_NSAP = $0016; // 22
{$EXTERNALSYM DNS_TYPE_NSAP}
DNS_TYPE_NSAPPTR = $0017; // 23
{$EXTERNALSYM DNS_TYPE_NSAPPTR}
// RFC 2065 (DNS security)
DNS_TYPE_SIG = $0018; // 24
{$EXTERNALSYM DNS_TYPE_SIG}
DNS_TYPE_KEY = $0019; // 25
{$EXTERNALSYM DNS_TYPE_KEY}
// RFC 1664 (X.400 mail)
DNS_TYPE_PX = $001a; // 26
{$EXTERNALSYM DNS_TYPE_PX}
// RFC 1712 (Geographic position)
DNS_TYPE_GPOS = $001b; // 27
{$EXTERNALSYM DNS_TYPE_GPOS}
// RFC 1886 (IPv6 Address)
DNS_TYPE_AAAA = $001c; // 28
{$EXTERNALSYM DNS_TYPE_AAAA}
// RFC 1876 (Geographic location)
DNS_TYPE_LOC = $001d; // 29
{$EXTERNALSYM DNS_TYPE_LOC}
// RFC 2065 (Secure negative response)
DNS_TYPE_NXT = $001e; // 30
{$EXTERNALSYM DNS_TYPE_NXT}
// RFC 2052 (Service location)
DNS_TYPE_SRV = $0021; // 33
{$EXTERNALSYM DNS_TYPE_SRV}
// ATM Standard something-or-another
DNS_TYPE_ATMA = $0022; // 34
{$EXTERNALSYM DNS_TYPE_ATMA}
//
// Query only types (1035, 1995)
//
DNS_TYPE_TKEY = $00f9; // 249
{$EXTERNALSYM DNS_TYPE_TKEY}
DNS_TYPE_TSIG = $00fa; // 250
{$EXTERNALSYM DNS_TYPE_TSIG}
DNS_TYPE_IXFR = $00fb; // 251
{$EXTERNALSYM DNS_TYPE_IXFR}
DNS_TYPE_AXFR = $00fc; // 252
{$EXTERNALSYM DNS_TYPE_AXFR}
DNS_TYPE_MAILB = $00fd; // 253
{$EXTERNALSYM DNS_TYPE_MAILB}
DNS_TYPE_MAILA = $00fe; // 254
{$EXTERNALSYM DNS_TYPE_MAILA}
DNS_TYPE_ALL = $00ff; // 255
{$EXTERNALSYM DNS_TYPE_ALL}
DNS_TYPE_ANY = $00ff; // 255
{$EXTERNALSYM DNS_TYPE_ANY}
//
// Temp Microsoft types -- use until get IANA approval for real type
//
DNS_TYPE_WINS = $ff01; // 64K - 255
{$EXTERNALSYM DNS_TYPE_WINS}
DNS_TYPE_WINSR = $ff02; // 64K - 254
{$EXTERNALSYM DNS_TYPE_WINSR}
DNS_TYPE_NBSTAT = (DNS_TYPE_WINSR);
{$EXTERNALSYM DNS_TYPE_NBSTAT}
//
// DNS Record Types -- Net Byte Order
//
DNS_RTYPE_A = $0100; // 1
{$EXTERNALSYM DNS_RTYPE_A}
DNS_RTYPE_NS = $0200; // 2
{$EXTERNALSYM DNS_RTYPE_NS}
DNS_RTYPE_MD = $0300; // 3
{$EXTERNALSYM DNS_RTYPE_MD}
DNS_RTYPE_MF = $0400; // 4
{$EXTERNALSYM DNS_RTYPE_MF}
DNS_RTYPE_CNAME = $0500; // 5
{$EXTERNALSYM DNS_RTYPE_CNAME}
DNS_RTYPE_SOA = $0600; // 6
{$EXTERNALSYM DNS_RTYPE_SOA}
DNS_RTYPE_MB = $0700; // 7
{$EXTERNALSYM DNS_RTYPE_MB}
DNS_RTYPE_MG = $0800; // 8
{$EXTERNALSYM DNS_RTYPE_MG}
DNS_RTYPE_MR = $0900; // 9
{$EXTERNALSYM DNS_RTYPE_MR}
DNS_RTYPE_NULL = $0a00; // 10
{$EXTERNALSYM DNS_RTYPE_NULL}
DNS_RTYPE_WKS = $0b00; // 11
{$EXTERNALSYM DNS_RTYPE_WKS}
DNS_RTYPE_PTR = $0c00; // 12
{$EXTERNALSYM DNS_RTYPE_PTR}
DNS_RTYPE_HINFO = $0d00; // 13
{$EXTERNALSYM DNS_RTYPE_HINFO}
DNS_RTYPE_MINFO = $0e00; // 14
{$EXTERNALSYM DNS_RTYPE_MINFO}
DNS_RTYPE_MX = $0f00; // 15
{$EXTERNALSYM DNS_RTYPE_MX}
DNS_RTYPE_TEXT = $1000; // 16
{$EXTERNALSYM DNS_RTYPE_TEXT}
// RFC 1183
DNS_RTYPE_RP = $1100; // 17
{$EXTERNALSYM DNS_RTYPE_RP}
DNS_RTYPE_AFSDB = $1200; // 18
{$EXTERNALSYM DNS_RTYPE_AFSDB}
DNS_RTYPE_X25 = $1300; // 19
{$EXTERNALSYM DNS_RTYPE_X25}
DNS_RTYPE_ISDN = $1400; // 20
{$EXTERNALSYM DNS_RTYPE_ISDN}
DNS_RTYPE_RT = $1500; // 21
{$EXTERNALSYM DNS_RTYPE_RT}
// RFC 1348
DNS_RTYPE_NSAP = $1600; // 22
{$EXTERNALSYM DNS_RTYPE_NSAP}
DNS_RTYPE_NSAPPTR = $1700; // 23
{$EXTERNALSYM DNS_RTYPE_NSAPPTR}
// RFC 2065 (DNS security)
DNS_RTYPE_SIG = $1800; // 24
{$EXTERNALSYM DNS_RTYPE_SIG}
DNS_RTYPE_KEY = $1900; // 25
{$EXTERNALSYM DNS_RTYPE_KEY}
// RFC 1664 (X.400 mail)
DNS_RTYPE_PX = $1a00; // 26
{$EXTERNALSYM DNS_RTYPE_PX}
// RFC 1712 (Geographic position)
DNS_RTYPE_GPOS = $1b00; // 27
{$EXTERNALSYM DNS_RTYPE_GPOS}
// RFC 1886 (IPv6 Address)
DNS_RTYPE_AAAA = $1c00; // 28
{$EXTERNALSYM DNS_RTYPE_AAAA}
// RFC 1876 (Geographic location)
DNS_RTYPE_LOC = $1d00; // 29
{$EXTERNALSYM DNS_RTYPE_LOC}
// RFC 2065 (Secure negative response)
DNS_RTYPE_NXT = $1e00; // 30
{$EXTERNALSYM DNS_RTYPE_NXT}
// RFC 2052 (Service location)
DNS_RTYPE_SRV = $2100; // 33
{$EXTERNALSYM DNS_RTYPE_SRV}
// ATM Standard something-or-another
DNS_RTYPE_ATMA = $2200; // 34
{$EXTERNALSYM DNS_RTYPE_ATMA}
//
// Query only types (1035, 1995)
//
DNS_RTYPE_TKEY = $f900; // 249
{$EXTERNALSYM DNS_RTYPE_TKEY}
DNS_RTYPE_TSIG = $fa00; // 250
{$EXTERNALSYM DNS_RTYPE_TSIG}
DNS_RTYPE_IXFR = $fb00; // 251
{$EXTERNALSYM DNS_RTYPE_IXFR}
DNS_RTYPE_AXFR = $fc00; // 252
{$EXTERNALSYM DNS_RTYPE_AXFR}
DNS_RTYPE_MAILB = $fd00; // 253
{$EXTERNALSYM DNS_RTYPE_MAILB}
DNS_RTYPE_MAILA = $fe00; // 254
{$EXTERNALSYM DNS_RTYPE_MAILA}
DNS_RTYPE_ALL = $ff00; // 255
{$EXTERNALSYM DNS_RTYPE_ALL}
DNS_RTYPE_ANY = $ff00; // 255
{$EXTERNALSYM DNS_RTYPE_ANY}
//
// Temp Microsoft types -- use until get IANA approval for real type
//
DNS_RTYPE_WINS = $01ff; // 64K - 255
{$EXTERNALSYM DNS_RTYPE_WINS}
DNS_RTYPE_WINSR = $02ff; // 64K - 254
{$EXTERNALSYM DNS_RTYPE_WINSR}
//
// Record type specific definitions
//
//
// ATMA (ATM address type) formats
//
// Define these directly for any environment (ex NT4)
// without winsock2 ATM support (ws2atm.h)
//
{$IFNDEF ATMA_E164}
DNS_ATMA_FORMAT_E164 = 1;
{$EXTERNALSYM DNS_ATMA_FORMAT_E164}
DNS_ATMA_FORMAT_AESA = 2;
{$EXTERNALSYM DNS_ATMA_FORMAT_AESA}
DNS_ATMA_MAX_ADDR_LENGTH = (20);
{$EXTERNALSYM DNS_ATMA_MAX_ADDR_LENGTH}
{$ELSE}
DNS_ATMA_FORMAT_E164 = ATM_E164;
{$EXTERNALSYM DNS_ATMA_FORMAT_E164}
DNS_ATMA_FORMAT_AESA = ATM_AESA;
{$EXTERNALSYM DNS_ATMA_FORMAT_AESA}
DNS_ATMA_MAX_ADDR_LENGTH = ATM_ADDR_SIZE;
{$EXTERNALSYM DNS_ATMA_MAX_ADDR_LENGTH}
{$ENDIF}
DNS_ATMA_AESA_ADDR_LENGTH = (20);
{$EXTERNALSYM DNS_ATMA_AESA_ADDR_LENGTH}
DNS_ATMA_MAX_RECORD_LENGTH = (DNS_ATMA_MAX_ADDR_LENGTH+1);
{$EXTERNALSYM DNS_ATMA_MAX_RECORD_LENGTH}
//
// DNSSEC defs
//
// DNSSEC algorithms
DNSSEC_ALGORITHM_RSAMD5 = 1;
{$EXTERNALSYM DNSSEC_ALGORITHM_RSAMD5}
DNSSEC_ALGORITHM_NULL = 253;
{$EXTERNALSYM DNSSEC_ALGORITHM_NULL}
DNSSEC_ALGORITHM_PRIVATE = 254;
{$EXTERNALSYM DNSSEC_ALGORITHM_PRIVATE}
// DNSSEC KEY protocol table
DNSSEC_PROTOCOL_NONE = 0;
{$EXTERNALSYM DNSSEC_PROTOCOL_NONE}
DNSSEC_PROTOCOL_TLS = 1;
{$EXTERNALSYM DNSSEC_PROTOCOL_TLS}
DNSSEC_PROTOCOL_EMAIL = 2;
{$EXTERNALSYM DNSSEC_PROTOCOL_EMAIL}
DNSSEC_PROTOCOL_DNSSEC = 3;
{$EXTERNALSYM DNSSEC_PROTOCOL_DNSSEC}
DNSSEC_PROTOCOL_IPSEC = 4;
{$EXTERNALSYM DNSSEC_PROTOCOL_IPSEC}
// DNSSEC KEY flag field
DNSSEC_KEY_FLAG_NOAUTH = $0001;
{$EXTERNALSYM DNSSEC_KEY_FLAG_NOAUTH}
DNSSEC_KEY_FLAG_NOCONF = $0002;
{$EXTERNALSYM DNSSEC_KEY_FLAG_NOCONF}
DNSSEC_KEY_FLAG_FLAG2 = $0004;
{$EXTERNALSYM DNSSEC_KEY_FLAG_FLAG2}
DNSSEC_KEY_FLAG_EXTEND = $0008;
{$EXTERNALSYM DNSSEC_KEY_FLAG_EXTEND}
DNSSEC_KEY_FLAG_FLAG4 = $0010;
{$EXTERNALSYM DNSSEC_KEY_FLAG_FLAG4}
DNSSEC_KEY_FLAG_FLAG5 = $0020;
{$EXTERNALSYM DNSSEC_KEY_FLAG_FLAG5}
// bits 6,7 are name type
DNSSEC_KEY_FLAG_USER = $0000;
{$EXTERNALSYM DNSSEC_KEY_FLAG_USER}
DNSSEC_KEY_FLAG_ZONE = $0040;
{$EXTERNALSYM DNSSEC_KEY_FLAG_ZONE}
DNSSEC_KEY_FLAG_HOST = $0080;
{$EXTERNALSYM DNSSEC_KEY_FLAG_HOST}
DNSSEC_KEY_FLAG_NTPE3 = $00c0;
{$EXTERNALSYM DNSSEC_KEY_FLAG_NTPE3}
// bits 8-11 are reserved for future use
DNSSEC_KEY_FLAG_FLAG8 = $0100;
{$EXTERNALSYM DNSSEC_KEY_FLAG_FLAG8}
DNSSEC_KEY_FLAG_FLAG9 = $0200;
{$EXTERNALSYM DNSSEC_KEY_FLAG_FLAG9}
DNSSEC_KEY_FLAG_FLAG10 = $0400;
{$EXTERNALSYM DNSSEC_KEY_FLAG_FLAG10}
DNSSEC_KEY_FLAG_FLAG11 = $0800;
{$EXTERNALSYM DNSSEC_KEY_FLAG_FLAG11}
// bits 12-15 are sig field
DNSSEC_KEY_FLAG_SIG0 = $0000;
{$EXTERNALSYM DNSSEC_KEY_FLAG_SIG0}
DNSSEC_KEY_FLAG_SIG1 = $1000;
{$EXTERNALSYM DNSSEC_KEY_FLAG_SIG1}
DNSSEC_KEY_FLAG_SIG2 = $2000;
{$EXTERNALSYM DNSSEC_KEY_FLAG_SIG2}
DNSSEC_KEY_FLAG_SIG3 = $3000;
{$EXTERNALSYM DNSSEC_KEY_FLAG_SIG3}
DNSSEC_KEY_FLAG_SIG4 = $4000;
{$EXTERNALSYM DNSSEC_KEY_FLAG_SIG4}
DNSSEC_KEY_FLAG_SIG5 = $5000;
{$EXTERNALSYM DNSSEC_KEY_FLAG_SIG5}
DNSSEC_KEY_FLAG_SIG6 = $6000;
{$EXTERNALSYM DNSSEC_KEY_FLAG_SIG6}
DNSSEC_KEY_FLAG_SIG7 = $7000;
{$EXTERNALSYM DNSSEC_KEY_FLAG_SIG7}
DNSSEC_KEY_FLAG_SIG8 = $8000;
{$EXTERNALSYM DNSSEC_KEY_FLAG_SIG8}
DNSSEC_KEY_FLAG_SIG9 = $9000;
{$EXTERNALSYM DNSSEC_KEY_FLAG_SIG9}
DNSSEC_KEY_FLAG_SIG10 = $a000;
{$EXTERNALSYM DNSSEC_KEY_FLAG_SIG10}
DNSSEC_KEY_FLAG_SIG11 = $b000;
{$EXTERNALSYM DNSSEC_KEY_FLAG_SIG11}
DNSSEC_KEY_FLAG_SIG12 = $c000;
{$EXTERNALSYM DNSSEC_KEY_FLAG_SIG12}
DNSSEC_KEY_FLAG_SIG13 = $d000;
{$EXTERNALSYM DNSSEC_KEY_FLAG_SIG13}
DNSSEC_KEY_FLAG_SIG14 = $e000;
{$EXTERNALSYM DNSSEC_KEY_FLAG_SIG14}
DNSSEC_KEY_FLAG_SIG15 = $f000;
{$EXTERNALSYM DNSSEC_KEY_FLAG_SIG15}
//
// TKEY modes
//
DNS_TKEY_MODE_SERVER_ASSIGN = 1;
{$EXTERNALSYM DNS_TKEY_MODE_SERVER_ASSIGN}
DNS_TKEY_MODE_DIFFIE_HELLMAN = 2;
{$EXTERNALSYM DNS_TKEY_MODE_DIFFIE_HELLMAN}
DNS_TKEY_MODE_GSS = 3;
{$EXTERNALSYM DNS_TKEY_MODE_GSS}
DNS_TKEY_MODE_RESOLVER_ASSIGN = 4;
{$EXTERNALSYM DNS_TKEY_MODE_RESOLVER_ASSIGN}
//
// WINS + NBSTAT flag field
//
DNS_WINS_FLAG_SCOPE = DWORD($80000000);
{$EXTERNALSYM DNS_WINS_FLAG_SCOPE}
DNS_WINS_FLAG_LOCAL = ($00010000);
{$EXTERNALSYM DNS_WINS_FLAG_LOCAL}
//
// Helpful checks
//
function IS_DWORD_ALIGNED(P: Pointer): BOOL;
{$EXTERNALSYM IS_DWORD_ALIGNED}
function IS_QWORD_ALIGNED(P: Pointer): BOOL;
{$EXTERNALSYM IS_QWORD_ALIGNED}
//
// DNS config API
//
//
// Types of DNS configuration info
//
type
DNS_CONFIG_TYPE = (
DnsConfigPrimaryDomainName_W,
DnsConfigPrimaryDomainName_A,
DnsConfigPrimaryDomainName_UTF8,
DnsConfigAdapterDomainName_W,
DnsConfigAdapterDomainName_A,
DnsConfigAdapterDomainName_UTF8,
DnsConfigDnsServerList,
DnsConfigSearchList,
DnsConfigAdapterInfo,
DnsConfigPrimaryHostNameRegistrationEnabled,
DnsConfigAdapterHostNameRegistrationEnabled,
DnsConfigAddressRegistrationMaxCount);
{$EXTERNALSYM DNS_CONFIG_TYPE}
TDnsConfigType = DNS_CONFIG_TYPE;
//
// Config API flags
//
//
// Causes config info to be allocated with LocalAlloc()
//
const
DNS_CONFIG_FLAG_ALLOC = $00000001;
{$EXTERNALSYM DNS_CONFIG_FLAG_ALLOC}
function DnsQueryConfig(Config: DNS_CONFIG_TYPE; Flag: DWORD; pwsAdapterName: PWSTR;
pReserved, pBuffer: PVOID; var pBufferLength: DWORD): DNS_STATUS; stdcall;
{$EXTERNALSYM DnsQueryConfig}
//
// DNS resource record structure
//
//
// Record data for specific types
//
type
DNS_A_DATA = record
IpAddress: IP4_ADDRESS;
end;
{$EXTERNALSYM DNS_A_DATA}
PDNS_A_DATA = ^DNS_A_DATA;
{$EXTERNALSYM PDNS_A_DATA}
TDnsAData = DNS_A_DATA;
PDnsAData = PDNS_A_DATA;
DNS_PTR_DATA = record
pNameHost: LPTSTR;
end;
{$EXTERNALSYM DNS_PTR_DATA}
PDNS_PTR_DATA = ^DNS_PTR_DATA;
{$EXTERNALSYM PDNS_PTR_DATA}
TDnsPtrData = DNS_PTR_DATA;
PDnsPtrData = PDNS_PTR_DATA;
DNS_SOA_DATA = record
pNamePrimaryServer: LPTSTR;
pNameAdministrator: LPTSTR;
dwSerialNo: DWORD;
dwRefresh: DWORD;
dwRetry: DWORD;
dwExpire: DWORD;
dwDefaultTtl: DWORD;
end;
{$EXTERNALSYM DNS_SOA_DATA}
PDNS_SOA_DATA = ^DNS_SOA_DATA;
{$EXTERNALSYM PDNS_SOA_DATA}
TDnsSoaData = DNS_SOA_DATA;
PDnsSoaData = PDNS_SOA_DATA;
DNS_MINFO_DATA = record
pNameMailbox: LPTSTR;
pNameErrorsMailbox: LPTSTR;
end;
{$EXTERNALSYM DNS_MINFO_DATA}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -