DNS_QUERY_RAW_REQUEST 구조체(windns.h)
중요
일부 정보는 상업적으로 출시되기 전에 실질적으로 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
DNS 원시 쿼리 요청을 나타냅니다( DnsQueryRaw 참조).
구문
typedef struct _DNS_QUERY_RAW_REQUEST {
ULONG version;
ULONG resultsVersion;
ULONG dnsQueryRawSize;
BYTE *dnsQueryRaw;
PWSTR dnsQueryName;
USHORT dnsQueryType;
ULONG64 queryOptions;
ULONG interfaceIndex;
DNS_QUERY_RAW_COMPLETION_ROUTINE queryCompletionCallback;
VOID *queryContext;
ULONG64 queryRawOptions;
ULONG customServersSize;
DNS_CUSTOM_SERVER *customServers;
ULONG protocol;
union {
SOCKADDR_INET sourceAddr;
CHAR maxSa[DNS_ADDR_MAX_SOCKADDR_LENGTH];
};
} DNS_QUERY_RAW_REQUEST;
멤버
version
형식: ULONG
이 구조체의 버전입니다. 현재 DNS_QUERY_RAW_REQUEST_VERSION1 (0x1)만 존재합니다.
resultsVersion
형식: ULONG
완료 콜백에 반환된 DNS_QUERY_RAW_RESULT 구조체의 요청된 버전입니다. 현재 는 DNS_QUERY_RAW_RESULT_VERSION1 (0x1)만 존재합니다.
dnsQueryRawSize
형식: ULONG
dnsQueryRaw가 가리키는 DNS 원시 쿼리 버퍼의 크기(바이트)입니다.
dnsQueryRaw
형식: BYTE*
DNS 원시 쿼리를 포함하는 버퍼에 대한 포인터입니다. 이 버퍼에는 DNS 쿼리의 유선 표현( 12 바이트 헤더 뒤에 질문 섹션이 있음)이 포함됩니다. 이 버퍼는 호출자가 소유하며 DnsQueryRaw 가 반환될 때까지만 유지해야 합니다.
dnsQueryName
형식: PWSTR
dnsQueryType과 함께 사용되는 쿼리할 DNS 이름을 나타내는 문자열에 대한 포인터입니다. 이 값이 있으면 dnsQueryRaw 대신 사용됩니다.
dnsQueryType
형식: USHORT
dnsQueryName과 함께 사용되는 쿼리의 DNS 레코드 형식을 나타내는 값입니다. 이러한 값은 DNS 레코드 형식으로 문서화되어 있습니다.
queryOptions
형식: ULONG64
사용할 쿼리 옵션입니다. DNS 쿼리 옵션에 설명된 대로 DnsQueryEx에서 동일한 쿼리 옵션을 사용합니다.
interfaceIndex
형식: ULONG
쿼리를 보낼 인터페이스 인덱스입니다. 0이면 모든 인터페이스가 사용됩니다.
queryCompletionCallback
형식: DNS_QUERY_RAW_COMPLETION_ROUTINE
쿼리가 완료될 때 호출될 콜백 함수에 대한 포인터입니다. 이 필드는 필수 필드입니다.
queryContext
형식: VOID*
사용자 컨텍스트에 대한 포인터입니다. queryCompletionCallback 호출에서 매개 변수로 제공됩니다. 이 필드는 필수 필드입니다.
queryRawOptions
형식: ULONG64
원시 쿼리를 수정하는 추가 옵션입니다.
DNS_QUERY_RAW_OPTION_BEST_EFFORT_PARSE (0x1). 원시 쿼리를 최상의 방식으로 구문 분석해야 한다고 지정합니다. 즉, 쿼리 이름 및 형식을 포함하여 필요한 정보를 추출할 수 있는 경우 예상과 다르게 형식이 지정된 입력 원시 쿼리(예: 구현에서 인식하지 못하는 새 레코드 형식 또는 헤더 비트 포함)의 경우 DnsQueryRaw 가 실패하지 않습니다. 이렇게 하면 서버로 전송된 쿼리가 구성과 관련하여 호출자 쿼리의 하위 집합이 됩니다.
customServersSize
형식: ULONG
customServers가 가리키는 사용자 지정 서버의 수입니다.
customServers
형식: DNS_CUSTOM_SERVER*
customServersSize 크기의 사용자 지정 서버 배열에 대한 포인터입니다. 이 포인터는 NULL
일 수 있으며, 이 경우 customServersSize 는 0이어야 합니다. 이 아닌 NULL
경우 DnsQueryRaw 호출이 반환될 때까지 이 포인터가 유지되어야 합니다.
protocol
형식: ULONG
dnsQueryRaw의 원본 쿼리에 사용되는 DNS 프로토콜 및 호출자가 응답을 예상하는 값입니다. 아래의 DNS 시스템에서 사용되는 프로토콜에 관계없이 원래 쿼리와 일치하도록 DNS 쿼리 응답을 변경하는 데 사용할 수 있습니다. 예를 들어 호출자가 UDP를 지정하고 DNS 시스템이 DOH(HTTPS)를 통해 DNS를 사용하기로 결정하고 UDP가 허용하는 것보다 큰 응답을 가져오는 경우 API는 결과가 너무 큰 경우 UDP 서버가 응답하는 동작과 일치하도록 패킷을 적절하게 자릅니다. 호출자가 TCP를 요청하는 경우 RFC 1035의 섹션 4.2.2에 지정된 대로 패킷에 2 바이트 길이 접두사를 지정해야 합니다.
허용되는 값은 DNS_PROTOCOL_UDP (0x1) 및 DNS_PROTOCOL_TCP (0x2)입니다.
sourceAddr
형식: SOCKADDR_INET
DNS 원시 쿼리 원본의 주소입니다.
maxSa[DNS_ADDR_MAX_SOCKADDR_LENGTH]
형식: CHAR[]
DNS 원시 쿼리 원본의 주소입니다. 정의된 SOCKADDR_INET 형식이 없는 코드에서 maxSa 배열을 사용할 수 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
헤더 | windns.h |
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기