DnsApi简单探索(4) DNS_QUERY_CANCEL struct 及其他
DNS_QUERY_CANCEL仅用于异步查询时取消, 且只能在回调开始后使用. 内容很少, 余下部分贴一点DNS_QUERY_REQUEST和DNS_QUERY_RESULT结构内成员的类型.
DNS_QUERY_CANCEL structure
DNS_QUERY_CANCEL可以被用于取消一个异步DNS请求.
语法
typedef struct_DNS_QUERY_CANCEL
{CHAR Reserved[32];
} DNS_QUERY_CANCEL, *PDNS_QUERY_CANCEL;
成员
Reserved
包含一个handle, 用于异步请求取消. 应用程序不能修改这个值.
注意
这个结构从一个已被调用的DnsQueryEx的pCancelHandle 参数返回.
Constant
|
Value
|
Meaning
|
DNS_QUERY_STANDARD
|
0x00000000
|
标准请求 .
|
DNS_QUERY_ACCEPT_TRUNCATED_RESPONSE
|
0x00000001
|
返回截断的结果 . TCP 不重试 .
|
DNS_QUERY_USE_TCP_ONLY
|
0x00000002
|
仅用 TCP 请求 .
|
DNS_QUERY_NO_RECURSION
|
0x00000004
|
指示 DNS 服务器执行迭代查询 ( 特别的 , 指示 DNS 服务器不执行递归查询 )
|
DNS_QUERY_BYPASS_CACHE
|
0x00000008
|
绕过解析器缓冲
|
DNS_QUERY_NO_WIRE_QUERY
|
0x00000010
|
指示 DNS 仅通过本地缓存查询 . (Win2000 不支持 )
|
DNS_QUERY_NO_LOCAL_NAME
|
0x00000020
|
指示 DNS 绕过本地名称 .(Win2000 不支持 )
|
DNS_QUERY_NO_HOSTS_FILE
|
0x00000040
|
阻止 DNS 通过 hosts 文件查询 . (Win2000 不支持 )
|
DNS_QUERY_NO_NETBT
|
0x00000080
|
阻止 DNS 使用 NetBT 查询 . (Win2000 不支持 )
|
DNS_QUERY_WIRE_ONLY
|
0x00000100
|
指示 DNS 仅通过网络查询 , 绕过本地 . (Win2000 不支持 )
|
DNS_QUERY_RETURN_MESSAGE
|
0x00000200
|
指示 DNS 返回完整的响应信息 . (Win2000 不支持 )
|
DNS_QUERY_MULTICAST_ONLY
|
0x00000400
|
阻止使用 DNS 查询 , 只允许使用本地连接多播名称解析 (LLMNR). (Win2000 不支持 )
|
DNS_QUERY_NO_MULTICAST
|
0x00000800
|
阻止使用本地连接多播名称解析 (LLMNR).
|
DNS_QUERY_TREAT_AS_FQDN
|
0x00001000
|
在解析过程中 , 阻止 DNS 响应在提交的名字里加上后缀 .
|
DNS_QUERY_ADDRCONFIG
|
0x00002000
|
仅适用Win7:
如果 IPv4 地址无效不要发送 A 记录查询 ,
如果 IPv6 地址无效不要发送 AAAA 记录查询 .
|
DNS_QUERY_DUAL_ADDR
|
0x00004000
|
仅适用Win7:
同时查询 AAAA 和 A 记录 , 并且分别返回查询结果 . 结果中 A 记录被映射到 AAAA 记录上 .
|
DNS_QUERY_MULTICAST_WAIT
|
0x00020000
|
等待完整超时 , 以从本地连接收集所有响应 . 如果未设置该标志 , 默认在收到第一个响应时返回
(Vista,2008 或以上版本不支持 .)
|
DNS_QUERY_MULTICAST_VERIFY
|
0x00040000
|
在同一个本地连接中 , 指示一个测试 , 使用本地主机名验证名称的唯一性 . 收集所有响应 , 即使未启用正常 LLMNR 发送者行为 .
(Vista,2008 或以上版本不支持 .)
|
DNS_QUERY_DONT_RESET_TTL_VALUES
|
0x00100000
|
If set, and if the response contains multiple records, records are stored with the TTL corresponding to the minimum value TTL from among all records. When this option is set, "Do not change the TTL of individual records" in the returned record set is not modified.
如果设置了该 flag, 并且响应中包含多个记录 , 记录与所有记录中最小的 TTL 一块存储
当这个flag被设置 , “Do not change the TTL of individual records” 在返回的记录设置中没有被修改 .
|
DNS_QUERY_DISABLE_IDN_ENCODING
|
0x00200000
|
在DnsQuery , DnsQueryEx, DnsModifyRecordsInSet , 以及 DnsReplaceRecordSet 中禁用国际域名 (IDN) 编码支持. 所有 punycode编码的名称将被视为 ASCII 编码, 并将在传输时被 ASCII 编码. 所有非 ASCII编码的名称在传输时都被编码为 UTF-8.
(Win8 或以上版本不支持 )
|
DNS_QUERY_APPEND_MULTILABEL
|
0x00800000
|
追加多标记 ?
|
DNS_QUERY_RESERVED
|
0xf0000000
|
预留 .
|
DNS_RECORD structure
DNS_RECORD结构存储了一个DNS资源记录(RR)
语法
typedef struct_DnsRecord {DNS_RECORD *pNext;PWSTR pName;WORD wType;WORD wDataLength;union {DWORD DW;DNS_RECORD_FLAGS S;} Flags;DWORD dwTtl;DWORD dwReserved;union {DNS_A_DATA A;DNS_SOA_DATA SOA, Soa;DNS_PTR_DATA PTR, Ptr, NS, Ns, CNAME, Cname, DNAME, Dname, MB, Mb, MD, Md, MF, Mf, MG, Mg, MR, Mr;DNS_MINFO_DATA MINFO, Minfo, RP, Rp;DNS_MX_DATA MX, Mx, AFSDB, Afsdb, RT, Rt;DNS_TXT_DATA HINFO, Hinfo, ISDN, Isdn, TXT, Txt, X25;DNS_NULL_DATA Null;DNS_WKS_DATA WKS, Wks;DNS_AAAA_DATA AAAA;DNS_KEY_DATA KEY, Key;DNS_SIG_DATA SIG, Sig;DNS_ATMA_DATA ATMA, Atma;DNS_NXT_DATA NXT, Nxt;DNS_SRV_DATA SRV, Srv;DNS_NAPTR_DATA NAPTR, Naptr;DNS_OPT_DATA OPT, Opt;DNS_DS_DATA DS, Ds;DNS_RRSIG_DATA RRSIG, Rrsig;DNS_NSEC_DATA NSEC, Nsec;DNS_DNSKEY_DATA DNSKEY, Dnskey;DNS_TKEY_DATA TKEY, Tkey;DNS_TSIG_DATA TSIG, Tsig;DNS_WINS_DATA WINS, Wins;DNS_WINSR_DATA WINSR, WinsR, NBSTAT, Nbstat;DNS_DHCID_DATA DHCID;} Data;
} DNS_RECORD, *PDNS_RECORD;
成员
pNext
指向下一个DNS_RECORD结构的指针.
pName
指向表示记录中域名的字符串的指针. 这必须是符合函数调用格式的字符串. 例如ANSI, Unicode或者UTF8.
wType
表示RR类型DNS Record Type. wType决定了Data的格式. 例如, 如果wType值为DNS_TYPE_A, Data的数据类型为DNS_A_DATA.
wDataLength
Data的数据长度,单位byte.
对于fixed-length, 该值是对应数据类型的大小, 例如 sizeof(DNS_A_DATA).
对于non-fixed, 使用下列宏之一来确定数据长度:
#include <windows.h> #define DNS_NULL_RECORD_LENGTH(ByteCount) (sizeof(DWORD) + (ByteCount)) #define DNS_WKS_RECORD_LENGTH(ByteCount) (sizeof(DNS_WKS_DATA) + (ByteCount-1)) #define DNS_WINS_RECORD_LENGTH(IpCount) (sizeof(DNS_WINS_DATA) + ((IpCount-1) * sizeof(IP_ADDRESS))) #define DNS_TEXT_RECORD_LENGTH(StringCount) (sizeof(DWORD) + ((StringCount) * sizeof(PCHAR)))
Flags
Flags取值
说明
DW
包含一个DNS_Record_Flags的位图(bitmap).
S
以DNS_RECORD_FLAGS结构形式的一组标志.
dwTtl
DNS RR的生存期, 单位秒.
dwReserved
预留的, 未被使用.
Data
DNS RR数据类型由wType决定, 取值为是下列之一:
RR类型
RR数据类型
wType取值
说明
A
DNS_A_DATA
DNS_TYPE_A
SOA, Soa
DNS_SOA_DATA
DNS_TYPE_SOA
PTR, Ptr, NS, Ns, CNAME, Cname, DNAME, Dname, MB, Mb, MD, Md, MF, Mf, MG, Mg, MR, Mr
DNS_PTR_DATA
DNS_TYPE_PTR
MINFO, Minfo, RP, Rp
DNS_MINFO_DATA
DNS_TYPE_MINFO
MX, Mx, AFSDB, Afsdb, RT, Rt
DNS_MX_DATA
DNS_TYPE_MX
HINFO, Hinfo, ISDN, Isdn, TXT, Txt, X25
DNS_TXT_DATA
DNS_TYPE_TEXT
Null
DNS_NULL_DATA
DNS_TYPE_NULL
WKS, Wks
DNS_WKS_DATA
DNS_TYPE_WKS
AAAA
DNS_AAAA_DATA
DNS_TYPE_AAAA
KEY, Key
DNS_KEY_DATA
DNS_TYPE_KEY
SIG, Sig
DNS_SIG_DATA
DNS_TYPE_SIG
ATMA, Atma
DNS_ATMA_DATA
DNS_TYPE_ATMA
NXT, Nxt
DNS_NXT_DATA
DNS_TYPE_NXT
SRV, Srv
DNS_SRV_DATA
DNS_TYPE_SRV
NAPTR, Naptr
DNS_NAPTR_DATA
DNS_TYPE_NAPTR
OPT, Opt
DNS_OPT_DATA
DNS_TYPE_OPT
Windows 7 or later
DS, Ds
DNS_DS_DATA
DNS_TYPE_DS
Windows 7 or later
RRSIG, Rrsig
DNS_RRSIG_DATA
DNS_TYPE_RRSIG
Windows 7 or later
NSEC, Nsec
DNS_NSEC_DATA
DNS_TYPE_NSEC
Windows 7 or later
DNSKEY, Dnskey
DNS_DNSKEY_DATA
DNS_TYPE_DNSKEY
Windows 7 or later
TKEY, Tkey
DNS_TKEY_DATA
DNS_TYPE_TKEY
TSIG, Tsig
DNS_TSIG_DATA
DNS_TYPE_TSIG
WINS, Wins
DNS_WINS_DATA
DNS_TYPE_WINS
WINSR, WinsR, NBSTAT, Nbstat
DNS_WINSR_DATA
DNS_TYPE_WINSR
DHCID
DNS_DHCID_DATA
DNS_TYPE_DHCID
Windows 7 or later
注意
当建立一个DNS_RECORD列表作为为DNS API中发现的各种DNS更新例程的输入参数时, 在DNS_RECORD结构的所有标志应当被设置为零. (使用前初始化)
DnsApi简单探索(4) DNS_QUERY_CANCEL struct 及其他相关推荐
- go语言后端框架之简单探索
文章目录 前置教程 数据库对象关系映射--gorm 1. 安装必要库 2. 定义orm对象,生成数据表结构 路由定义及处理 1. 集中管理路由 2. 编写路由绑定的处理函数 3. 删 操作 4. 查 ...
- 深入探索C语言struct的用法
文章开始之气那,给大家分享一个C语言在线练习的网站(本人常用):C语言在线练习 struct的作用 一般来说,区别一个开发人员是否具备丰富开发经历的标志在于其会不会使用struct,怎么使用strcu ...
- 简单探索MNIST(Softmax回归和两层CNN)-Tensorflow学习
简述 这次是在看<21个项目玩转深度学习>那本书的第一章节后做的笔记. 这段时间,打算把TensorFlow再补补,提升一下技术水平~ 希望我能坚持下来,抽空把这本书刷下来吧~ 导入数据 ...
- C++序列化与反序列化的简单探索
序列化是指将数据从有结构清晰的语言定义的数据形式转化为二进制字符串,反序列化则是序列化的逆操作. 百度百科定义序列化如下: 序列化 (Serialization)将对象的状态信息转换为可以存储或传输的 ...
- 前端一键换肤换肤简单探索
效果图 默认 蓝白 方法一.如果要控制的范围不多很小的话 使用控制类名的切换 <!DOCTYPE html> <html lang="zh-CN">< ...
- 信贷违约风险预测(二)简单的数据探索
之前已经简单介绍了数据,客户的违约风险的预测是一个监督学习的任务,主要是对客户进行分类,就是哪些人可以获得贷款,哪些不可以,每个申请者可能会违约的概率在0~1之间,0:表示申请者能及时还款,1:申请者 ...
- Python之路(第三十一篇) 网络编程:简单的tcp套接字通信、粘包现象
一.简单的tcp套接字通信 套接字通信的一般流程 服务端 server = socket() #创建服务器套接字server.bind() #把地址绑定到套接字,网络地址加端口server.liste ...
- 微软面试中简单的算法题目(转)
微软面试中简单的算法题目(转) (说明:这些题就不是什么花样了,考的是你的基础知识怎么样.再聪明而没有实学的人都将会被这些题所淘汰.) 1.链表和数组的区别在哪里? ANSWER 主要在基本概念上的 ...
- 14.结构体struct.rs
//Rust 里 struct 语句仅用来定义,不能声明实例,结尾不需要 ; 符号,而且每个字段定义之后用 , 分隔#[derive(Debug)] struct Site {domain: Stri ...
最新文章
- 用Python拨打电话
- AsyncTask中各个函数详细的调用过程,初步实现异步任务
- 5g应用场景_5G新媒体场景应用解决方案(ppt)
- Tableau---数据可视化软件
- .Net Core 之 MSBuild 介绍
- Bella团队正在进行Flex Saving v2上线最后的准备工作
- 基于深度学习的个性化新闻推荐.pdf(附下载链接)
- 通用方法 Java实现excel表格转成json
- loss值多少才算收敛_库存究竟多少才算合理?
- 微信朋友圈千亿访问量背后的技术挑战和实践总结
- linux下加载ISO镜像的方法
- 多元函数的微分学思维导图_多元函数微分学思维导图_多元函数微分学j_多元函数微分学思维导图...
- 在C 语言中 下列变量命名不合规范的是,GJB9001C-2017内审员培训试题D卷(答案)
- 百战程序员怎么样?python介绍和了解python是什么
- 以往WiFi的最大痛点,终于被WiFi 7给解决掉了
- 壹度DIY_微信小程序组件_小程序插件开发
- 第一种可以用手机远程实时观看的网络摄像机,还带云台,报警,双向语音
- 全民开发者时代到来!华为云开发者日深圳站成功举办
- Oracle数据库(索引、视图、伪列与伪表)
- Asset Pricing:Introduction
热门文章
- C++ 入门(编写第一个C++程序)
- 「专升本信息技术」计算机基础知识单选题集 (12)
- 关于%02d %.10d %2d %.01f的值的区别
- 他对她一见钟情,她对他无感,十年后他们终于走到了一起
- VisMockup10.1安装
- 老婆生日,不知如何庆祝?头痛!
- 详解KNIME自定义节点的NodeModel类
- 小班语言游戏教案%3c我的五官%3e,小班语言教案《我的五官》三篇
- Mysql——存储引擎
- iOS视频播放Demo VideoPlayerDemo