Share via


NDIS_PD_QUERY_QUEUE_DEPTH 콜백 함수(ndis.h)

PD(PacketDirect) 플랫폼은 PD 지원 미니포트 드라이버의 PDQueryQueueDepth 함수를 호출하여 에 게시된 처리되지 않은 PD_BUFFER 구조의 수를 반환합니다.

참고NDIS_PD_QUERY_QUEUE_DEPTH 형식을 사용하여 함수를 선언해야 합니다. 자세한 내용은 다음 예제 섹션을 참조하세요.

 

구문

NDIS_PD_QUERY_QUEUE_DEPTH NdisPdQueryQueueDepth;

VOID() NdisPdQueryQueueDepth(
  [in]  const NDIS_PD_QUEUE *Queue,
  [out] ULONG64 *Depth
)
{...}

매개 변수

[in] Queue

전송 또는 수신 큐에 대한 포인터입니다.

[out] Depth

수신 큐에서 들어오는 패킷을 배치하는 데 사용할 수 있는 PD_BUFFER 구조의 수입니다. 예를 들어 10개의 버퍼가 게시되었고 10개 중 3개가 들어오는 패킷을 배치하기 위해 공급자가 이미 가져온 경우 이 값은 7이어야 합니다. 전송 큐에서 공급자가 전송을 위해 큐에서 아직 가져오지 않은 PD_BUFFER 구조의 수입니다.

반환 값

이 콜백 함수는 값을 반환하지 않습니다.

설명

참고 IHV 파트너의 경우: 클라이언트가 정체 빌드에 액세스하고 예방 조치를 취하는 데 큐 깊이를 모니터링하는 기능이 매우 중요합니다. 전송 큐에 대한 큐 깊이가 증가하는 것은 아웃바운드 링크의 정체가 증가하고 있다는 신호입니다. RX 큐에 대한 큐 깊이 감소는 클라이언트가 인바운드 링크에서 들어오는 패킷을 충분히 빠르게 처리할 수 없다는 신호입니다. 클라이언트는 자주 상태 큐 깊이를 모니터링해야 할 수 있습니다(예: 각 게시물 및 작업에 대한 큐 깊이 가져오기) 단일 PDPostAndDrainBufferList 호출 비용과 비교하여 큐 깊이를 쿼리하는 비용(CPU 주기)은 눈에 띄지 않아야 합니다.
 

PDQueryQueueDepth 함수를 정의하려면 먼저 정의 중인 함수의 형식을 식별하는 함수 선언을 제공해야 합니다. Windows는 드라이버에 대한 함수 형식 집합을 제공합니다. 함수 형식을 사용하여 함수를 선언하면 드라이버에 대한 코드 분석, SDV( 정적 드라이버 검증 도구 ) 및 기타 확인 도구에서 오류를 찾는 데 도움이 되며 Windows 운영 체제용 드라이버를 작성하기 위한 요구 사항입니다.

예를 들어 " MyPDQueryQueueDepth"라는 PDQueryQueueDepth 함수를 정의하려면 다음 코드 예제와 같이 NDIS_PD_QUERY_QUEUE_DEPTH 형식을 사용합니다.

NDIS_PD_QUERY_QUEUE_DEPTH MyPDQueryQueueDepth;

그런 다음 다음과 같이 함수를 구현합니다.

_Use_decl_annotations_
VOID
 MyPDQueryQueueDepth(
    CONST NDIS_PD_QUEUE*  Queue,
    ULONG64*  Depth
    )
  {...}

NDIS_PD_QUERY_QUEUE_DEPTH 함수 형식은 Ntddndis.h 헤더 파일에 정의되어 있습니다. 코드 분석 도구를 실행할 때 오류를 보다 정확하게 식별하려면 함수 정의에 Use_decl_annotations 주석을 추가해야 합니다. Use_decl_annotations 주석은 헤더 파일의 NDIS_PD_QUERY_QUEUE_DEPTH 함수 형식에 적용되는 주석이 사용되도록 합니다. 함수 선언 요구 사항에 대한 자세한 내용은 NDIS 드라이버에 함수 역할 형식을 사용하여 함수 선언을 참조하세요.

Use_decl_annotations 대한 자세한 내용은 함수 동작에 주석을 추가를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10
지원되는 최소 서버 Windows Server 2016
대상 플랫폼 Windows
헤더 ndis.h
IRQL <= DISPATCH_LEVEL