前文提到DnsQueryEx()请求是需要用到三个参数, 其中DNS_QUERY_REQUEST便是第一个参数, 用来这是请求信息, 例如要请求的DNS服务器, 要请求的域名等等. DNS_QUERY_REQUEST structure DNS_QUERY_REQUEST 结构包含了 DnsQueryEx() 进行 DNS 请求所用到的参数 语
前文提到DnsQueryEx()请求是需要用到三个参数, 其中DNS_QUERY_REQUEST便是第一个参数, 用来这是请求信息, 例如要请求的DNS服务器, 要请求的域名等等.
DNS_QUERY_REQUEST structure
DNS_QUERY_REQUEST 结构包含了DnsQueryEx() 进行DNS请求所用到的参数
语法
typedef struct _DNS_QUERY_REQUEST { ULONG Version; PCWSTR QueryName; WORD QueryType; ULONG64 QueryOptions; PDNS_ADDR_ARRAY pDnsServerList; ULONG InterfaceIndex; PDNS_QUERY_COMPLETION_ROUTINE pQueryCompletionCallback; PVOID pQueryContext; } DNS_QUERY_REQUEST, *PDNS_QUERY_REQUEST;
成员
Version
结构版本号必须是下列之一:
DNS_QUERY_REQUEST_VERSION1 (1)
QueryName
一个指向要查询的DNS名的字符串的指针,
注意: 如果QueryName为空, 则使用本地DNS进行查询.
QueryType
表示资源记录(RR)DNS_Record_Type是否被请求的标志.
QueryType决定了DNS_QUERY_RESULT返回的pQueryRecord数的据格式.
例如, 如果wType是DNS_TYPE_A, pQueryRecords的数据格式为DNS_A_DATA.
QueryOptions
包含了DNS_Query_Options的位图(bitmap).
DNS_Query_Options选项可以组合, 并且所有选项覆盖DNS_QUERY_STANDARD
pDnsServerList
一个指向DNS_ADDR_ARRAY的指针, 包含了一个DNS_Servers列表.
InterfaceIndex
接口索引. 如果InterfaceIndex值为0, 则所有接口都将被考虑.
pQueryCompletionCallback
指向DNS_QUERY_COMPLETION_ROUTINE回调函数的指针, DNS_QUERY_COMPLETION_ROUTINE用于返回异步查询结果.
注意: 如果该值为NULL, 则DnsQueryEx为同步机制.
pQueryContext
指向用户自定义数据的指针.
某些定义, 如QueryType等, 请参见微软官方.