📄 jwawindns.pas
字号:
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_WORD_ALIGNED(P: Pointer): BOOL;
{$EXTERNALSYM IS_DWORD_ALIGNED}
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 = (
// In Win2K
DnsConfigPrimaryDomainName_W,
DnsConfigPrimaryDomainName_A,
DnsConfigPrimaryDomainName_UTF8,
// Not available yet
DnsConfigAdapterDomainName_W,
DnsConfigAdapterDomainName_A,
DnsConfigAdapterDomainName_UTF8,
// In Win2K
DnsConfigDnsServerList,
// Not available yet
DnsConfigSearchList,
DnsConfigAdapterInfo,
// In Win2K
DnsConfigPrimaryHostNameRegistrationEnabled,
DnsConfigAdapterHostNameRegistrationEnabled,
DnsConfigAddressRegistrationMaxCount,
// In WindowsXP
DnsConfigHostName_W,
DnsConfigHostName_A,
DnsConfigHostName_UTF8,
DnsConfigFullHostName_W,
DnsConfigFullHostName_A,
DnsConfigFullHostName_UTF8);
{$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; pBufferLength: PDWORD): DNS_STATUS; stdcall;
{$EXTERNALSYM DnsQueryConfig}
//
// DNS resource record structure
//
//
// Record data for specific types
//
type
PDNS_A_DATA = ^DNS_A_DATA;
{$EXTERNALSYM PDNS_A_DATA}
DNS_A_DATA = record
IpAddress: IP4_ADDRESS;
end;
{$EXTERNALSYM DNS_A_DATA}
TDnsAData = DNS_A_DATA;
PDnsAData = PDNS_A_DATA;
PDNS_PTR_DATA = ^DNS_PTR_DATA;
{$EXTERNALSYM PDNS_PTR_DATA}
DNS_PTR_DATA = record
pNameHost: LPTSTR;
end;
{$EXTERNALSYM DNS_PTR_DATA}
TDnsPtrData = DNS_PTR_DATA;
PDnsPtrData = PDNS_PTR_DATA;
PDNS_SOA_DATA = ^DNS_SOA_DATA;
{$EXTERNALSYM PDNS_SOA_DATA}
DNS_SOA_DATA = record
pNamePrimaryServer: LPTSTR;
pNameAdministrator: LPTSTR;
dwSerialNo: DWORD;
dwRefresh: DWORD;
dwRetry: DWORD;
dwExpire: DWORD;
dwDefaultTtl: DWORD;
end;
{$EXTERNALSYM DNS_SOA_DATA}
TDnsSoaData = DNS_SOA_DATA;
PDnsSoaData = PDNS_SOA_DATA;
PDNS_MINFO_DATA = ^DNS_MINFO_DATA;
{$EXTERNALSYM PDNS_MINFO_DATA}
DNS_MINFO_DATA = record
pNameMailbox: LPTSTR;
pNameErrorsMailbox: LPTSTR;
end;
{$EXTERNALSYM DNS_MINFO_DATA}
TDnsMinfoData = DNS_MINFO_DATA;
PDnsMinfoData = PDNS_MINFO_DATA;
PDNS_MX_DATA = ^DNS_MX_DATA;
{$EXTERNALSYM PDNS_MX_DATA}
DNS_MX_DATA = record
pNameExchange: LPTSTR;
wPreference: WORD;
Pad: WORD; // keep ptrs DWORD aligned
end;
{$EXTERNALSYM DNS_MX_DATA}
TDnsMxData = DNS_MX_DATA;
PDnsMxData = PDNS_MX_DATA;
PDNS_TXT_DATA = ^DNS_TXT_DATA;
{$EXTERNALSYM PDNS_TXT_DATA}
DNS_TXT_DATA = record
dwStringCount: DWORD;
pStringArray: array [0..0] of LPTSTR;
end;
{$EXTERNALSYM DNS_TXT_DATA}
TDnsTxtData = DNS_TXT_DATA;
PDnsTxtData = PDNS_TXT_DATA;
PDNS_NULL_DATA = ^DNS_NULL_DATA;
{$EXTERNALSYM PDNS_NULL_DATA}
DNS_NULL_DATA = record
dwByteCount: DWORD;
Data: array [0..0] of BYTE;
end;
{$EXTERNALSYM DNS_NULL_DATA}
TDnsNullData = DNS_NULL_DATA;
PDnsNullData = PDNS_NULL_DATA;
PDNS_WKS_DATA = ^DNS_WKS_DATA;
{$EXTERNALSYM PDNS_WKS_DATA}
DNS_WKS_DATA = record
IpAddress: IP4_ADDRESS;
chProtocol: UCHAR;
BitMask: array [0..0] of BYTE;
end;
{$EXTERNALSYM DNS_WKS_DATA}
TDnsWksData = DNS_WKS_DATA;
PDnsWksData = PDNS_WKS_DATA;
PDNS_AAAA_DATA = ^DNS_AAAA_DATA;
{$EXTERNALSYM PDNS_AAAA_DATA}
DNS_AAAA_DATA = record
Ip6Address: DNS_IP6_ADDRESS;
end;
{$EXTERNALSYM DNS_AAAA_DATA}
TDnsAaaaData = DNS_AAAA_DATA;
PDnsAaaaData = PDNS_AAAA_DATA;
PDNS_SIG_DATA = ^DNS_SIG_DATA;
{$EXTERNALSYM PDNS_SIG_DATA}
DNS_SIG_DATA = record
pNameSigner: LPTSTR;
wTypeCovered: WORD;
chAlgorithm: BYTE;
chLabelCount: BYTE;
dwOriginalTtl: DWORD;
dwExpiration: DWORD;
dwTimeSigned: DWORD;
wKeyTag: WORD;
Pad: WORD; // keep byte field aligned
Signature: array [0..0] of BYTE;
end;
{$EXTERNALSYM DNS_SIG_DATA}
TDnsSigData = DNS_SIG_DATA;
PDnsSigData = PDNS_SIG_DATA;
PDNS_KEY_DATA = ^DNS_KEY_DATA;
{$EXTERNALSYM PDNS_KEY_DATA}
DNS_KEY_DATA = record
wFlags: WORD;
chProtocol: BYTE;
chAlgorithm: BYTE;
Key: array [0..1 - 1] of BYTE;
end;
{$EXTERNALSYM DNS_KEY_DATA}
TDnsKeyData = DNS_KEY_DATA;
PDnsKeyData = PDNS_KEY_DATA;
PDNS_LOC_DATA = ^DNS_LOC_DATA;
{$EXTERNALSYM PDNS_LOC_DATA}
DNS_LOC_DATA = record
wVersion: WORD;
wSize: WORD;
wHorPrec: WORD;
wVerPrec: WORD;
dwLatitude: DWORD;
dwLongitude: DWORD;
dwAltitude: DWORD;
end;
{$EXTERNALSYM DNS_LOC_DATA}
TDnsLocData = DNS_LOC_DATA;
PDnsLocData = PDNS_LOC_DATA;
PDNS_NXT_DATA = ^DNS_NXT_DATA;
{$EXTERNALSYM PDNS_NXT_DATA}
DNS_NXT_DATA = record
pNameNext: LPTSTR;
wNumTypes: WORD;
wTypes: array [0..0] of WORD;
end;
{$EXTERNALSYM DNS_NXT_DATA}
TDnsNxtData = DNS_NXT_DATA;
PDnsNxtData = PDNS_NXT_DATA;
PDNS_SRV_DATA = ^DNS_SRV_DATA;
{$EXTERNALSYM PDNS_SRV_DATA}
DNS_SRV_DATA = record
pNameTarget: LPTSTR;
wPriority: WORD;
wWeight: WORD;
wPort: WORD;
Pad: WORD; // keep ptrs DWORD aligned
end;
{$EXTERNALSYM DNS_SRV_DATA}
TDnsSrvData = DNS_SRV_DATA;
PDnsSrvData = PDNS_SRV_DATA;
PDNS_ATMA_DATA = ^DNS_ATMA_DATA;
{$EXTERNALSYM PDNS_ATMA_DATA}
DNS_ATMA_DATA = record
AddressType: BYTE;
Address: array [0..DNS_ATMA_MAX_ADDR_LENGTH - 1] of BYTE;
// E164 -- Null terminated string of less than
// DNS_ATMA_MAX_ADDR_LENGTH
//
// For NSAP (AESA) BCD encoding of exactly
// DNS_ATMA_AESA_ADDR_LENGTH
end;
{$EXTERNALSYM DNS_ATMA_DATA}
TDnsAtmaData = DNS_ATMA_DATA;
PDnsAtmaData = PDNS_ATMA_DATA;
PDNS_TKEY_DATA = ^DNS_TKEY_DATA;
{$EXTERNALSYM PDNS_TKEY_DATA}
DNS_TKEY_DATA = record
pNameAlgorithm: LPTSTR;
pAlgorithmPacket: PBYTE;
pKey: PBYTE;
pOtherData: PBYTE;
dwCreateTime: DWORD;
dwExpireTime: DWORD;
wMode: WORD;
wError: WORD;
wKeyLength: WORD;
wOtherLength: WORD;
cAlgNameLength: UCHAR;
bPacketPointers: BOOL;
end;
{$EXTERNALSYM DNS_TKEY_DATA}
TDnsTkeyData = DNS_TKEY_DATA;
PDnsTkeyData = PDNS_TKEY_DATA;
PDNS_TSIG_DATA = ^DNS_TSIG_DATA;
{$EXTERNALSYM PDNS_TSIG_DATA}
DNS_TSIG_DATA = record
pNameAlgorithm: LPTSTR;
pAlgorithmPacket: PBYTE;
pSignature: PBYTE;
pOtherData: PBYTE;
i64CreateTime: LONGLONG;
wFudgeTime: WORD;
wOriginalXid: WORD;
wError: WORD;
wSigLength: WORD;
wOtherLength: WORD;
cAlgNameLength: UCHAR;
bPacketPointers: BOOL;
end;
{$EXTERNALSYM DNS_TSIG_DATA}
TDnsTsigData = DNS_TSIG_DATA;
PDnsTsigData = PDNS_TSIG_DATA;
//
// MS only types -- only hit the wire in MS-MS zone transfer
//
PDNS_WINS_DATA = ^DNS_WINS_DATA;
{$EXTERNALSYM PDNS_WINS_DATA}
DNS_WINS_DATA = record
dwMappingFlag: DWORD;
dwLookupTimeout: DWORD;
dwCacheTimeout: DWORD;
cWinsServerCount: DWORD;
WinsServers: array [0..0] of IP4_ADDRESS;
end;
{$EXTERNALSYM DNS_WINS_DATA}
TDnsWinsData = DNS_WINS_DATA;
PDnsWinsData = PDNS_WINS_DATA;
PDNS_WINSR_DATA = ^DNS_WINSR_DATA;
{$EXTERNALSYM PDNS_WINSR_DATA}
DNS_WINSR_DATA = record
dwMappingFlag: DWORD;
dwLookupTimeout: DWORD;
dwCacheTimeout: DWORD;
pNameResultDomain: LPTSTR;
end;
{$EXTERNALSYM DNS_WINSR_DATA}
TDnsWinsrData = DNS_WINSR_DATA;
PDnsWinsrData = PDNS_WINSR_DATA;
//
// Length of non-fixed-length data types
//
function DNS_TEXT_RECORD_LENGTH(StringCount: Integer): Integer;
{$EXTERNALSYM DNS_TEXT_RECORD_LENGTH}
function DNS_NULL_RECORD_LENGTH(ByteCount: Integer): Integer;
{$EXTERNALSYM DNS_NULL_RECORD_LENGTH}
function DNS_WKS_RECORD_LENGTH(ByteCount: Integer): Integer;
{$EXTERNALSYM DNS_WKS_RECORD_LENGTH}
//function DNS_WINS_RECORD_LENGTH(IpCount: Integer): Integer;
//{$EXTERNALSYM DNS_WINS_RECORD_LENGTH}
//
// Record flags
//
type
_DnsRecordFlags = record
//DWORD Section : 2;
//DWORD Delete : 1;
//DWORD CharSet : 2;
//DWORD Unused : 3;
//DWORD Reserved : 24;
Flags: DWORD;
end;
{$EXTERNALSYM _DnsRecordFlags}
DNS_RECORD_FLAGS = _DnsRecordFlags;
{$EXTERNALSYM DNS_RECORD_FLAGS}
TDnsRecordFlags = DNS_RECORD_FLAGS;
PDnsRecordFlags = ^DNS_RECORD_FLAGS;
//
// Wire Record Sections
//
// Useable both in record flags "Section" and as index into
// wire message header section counts.
//
_DnsSection = (
DnsSectionQuestion,
DnsSectionAnswer,
DnsSectionAuthority,
DnsSectionAddtional);
{$EXTERNALSYM _DnsSection}
DNS_SECTION = _DnsSection;
TDnsSection = _DnsSection;
// Update message section names
const
DnsSectionZone = DnsSectionQuestion;
{$EXTERNALSYM DnsSectionZone}
DnsSectionPrereq = DnsSectionAnswer;
{$EXTERNALSYM DnsSectionPrereq}
DnsSectionUpdate = DnsSectionAuthority;
{$EXTERNALSYM DnsSectionUpdate}
//
// Record flags as bit flags
// These may be or'd together to set the fields
//
// RR Section in packet
DNSREC_SECTION = ($00000003);
{$EXTERNALSYM DNSREC_SECTION}
DNSREC_QUESTION = ($00000000);
{$EXTERNALSYM DNSREC_QUESTION}
DNSREC_ANSWER = ($00000001);
{$EXTERNALSYM DNSREC_ANSWER}
DNSREC_AUTHORITY = ($00000002);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -