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, 用于异步请求取消. 应用程序不能修改这个值.

注意

这个结构从一个已被调用的DnsQueryExpCancelHandle 参数返回.

DNS Query Options
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 及其他相关推荐

  1. go语言后端框架之简单探索

    文章目录 前置教程 数据库对象关系映射--gorm 1. 安装必要库 2. 定义orm对象,生成数据表结构 路由定义及处理 1. 集中管理路由 2. 编写路由绑定的处理函数 3. 删 操作 4. 查 ...

  2. 深入探索C语言struct的用法

    文章开始之气那,给大家分享一个C语言在线练习的网站(本人常用):C语言在线练习 struct的作用 一般来说,区别一个开发人员是否具备丰富开发经历的标志在于其会不会使用struct,怎么使用strcu ...

  3. 简单探索MNIST(Softmax回归和两层CNN)-Tensorflow学习

    简述 这次是在看<21个项目玩转深度学习>那本书的第一章节后做的笔记. 这段时间,打算把TensorFlow再补补,提升一下技术水平~ 希望我能坚持下来,抽空把这本书刷下来吧~ 导入数据 ...

  4. C++序列化与反序列化的简单探索

    序列化是指将数据从有结构清晰的语言定义的数据形式转化为二进制字符串,反序列化则是序列化的逆操作. 百度百科定义序列化如下: 序列化 (Serialization)将对象的状态信息转换为可以存储或传输的 ...

  5. 前端一键换肤换肤简单探索

    效果图 默认 蓝白 方法一.如果要控制的范围不多很小的话 使用控制类名的切换 <!DOCTYPE html> <html lang="zh-CN">< ...

  6. 信贷违约风险预测(二)简单的数据探索

    之前已经简单介绍了数据,客户的违约风险的预测是一个监督学习的任务,主要是对客户进行分类,就是哪些人可以获得贷款,哪些不可以,每个申请者可能会违约的概率在0~1之间,0:表示申请者能及时还款,1:申请者 ...

  7. Python之路(第三十一篇) 网络编程:简单的tcp套接字通信、粘包现象

    一.简单的tcp套接字通信 套接字通信的一般流程 服务端 server = socket() #创建服务器套接字server.bind() #把地址绑定到套接字,网络地址加端口server.liste ...

  8. 微软面试中简单的算法题目(转)

    微软面试中简单的算法题目(转) (说明:这些题就不是什么花样了,考的是你的基础知识怎么样.再聪明而没有实学的人都将会被这些题所淘汰.)  1.链表和数组的区别在哪里? ANSWER 主要在基本概念上的 ...

  9. 14.结构体struct.rs

    //Rust 里 struct 语句仅用来定义,不能声明实例,结尾不需要 ; 符号,而且每个字段定义之后用 , 分隔#[derive(Debug)] struct Site {domain: Stri ...

最新文章

  1. 用Python拨打电话
  2. AsyncTask中各个函数详细的调用过程,初步实现异步任务
  3. 5g应用场景_5G新媒体场景应用解决方案(ppt)
  4. Tableau---数据可视化软件
  5. .Net Core 之 MSBuild 介绍
  6. Bella团队正在进行Flex Saving v2上线最后的准备工作
  7. 基于深度学习的个性化新闻推荐.pdf(附下载链接)
  8. 通用方法 Java实现excel表格转成json
  9. loss值多少才算收敛_库存究竟多少才算合理?
  10. 微信朋友圈千亿访问量背后的技术挑战和实践总结
  11. linux下加载ISO镜像的方法
  12. 多元函数的微分学思维导图_多元函数微分学思维导图_多元函数微分学j_多元函数微分学思维导图...
  13. 在C 语言中 下列变量命名不合规范的是,GJB9001C-2017内审员培训试题D卷(答案)
  14. 百战程序员怎么样?python介绍和了解python是什么
  15. 以往WiFi的最大痛点,终于被WiFi 7给解决掉了
  16. 壹度DIY_微信小程序组件_小程序插件开发
  17. 第一种可以用手机远程实时观看的网络摄像机,还带云台,报警,双向语音
  18. 全民开发者时代到来!华为云开发者日深圳站成功举办
  19. Oracle数据库(索引、视图、伪列与伪表)
  20. Asset Pricing:Introduction

热门文章

  1. C++ 入门(编写第一个C++程序)
  2. 「专升本信息技术」计算机基础知识单选题集 (12)
  3. 关于%02d %.10d %2d %.01f的值的区别
  4. 他对她一见钟情,她对他无感,十年后他们终于走到了一起
  5. VisMockup10.1安装
  6. 老婆生日,不知如何庆祝?头痛!
  7. 详解KNIME自定义节点的NodeModel类
  8. 小班语言游戏教案%3c我的五官%3e,小班语言教案《我的五官》三篇
  9. Mysql——存储引擎
  10. iOS视频播放Demo VideoPlayerDemo