다음을 통해 공유


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