IMiniportWaveRTOutputStream::GetPacketCount 메서드(portcls.h)

GetPacketCount는 WaveRT 버퍼에서 하드웨어로 완전히 전송된 (1부터 시작하는) 패킷 수를 반환합니다.

구문

NTSTATUS GetPacketCount(
  [out] ULONG *pPacketCount
);

매개 변수

[out] pPacketCount

pPacketCount는 WaveRT 버퍼에서 하드웨어로 완전히 전송된 패킷 수를 반환합니다.

반환 값

GetPacketCount 는 호출에 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 함수는 코드에 적절한 오류 상태 반환합니다.

설명

패킷 수에서 OS는 WaveRT 버퍼에 쓰는 패킷의 스트림 위치를 파생시킬 수 있습니다. OS는 WaveRT 버퍼 내에서 쓸 다음 패킷의 WaveRT 버퍼 위치를 파생할 수도 있습니다. WaveRT 드라이버의 경우 드라이버는 WaveRT 버퍼의 각 패킷에서 데이터를 전송할 때 단일 알림 이벤트에 신호를 보냅니다. 따라서 이벤트만으로는 WaveRT 버퍼 내에서 전송되는 패킷을 나타낼 수 없습니다. 정상적인 작업에서는 문제가 되지 않지만 언더플로의 경우 OS가 다음에 쓸 패킷을 결정할 수 있는 패킷 수를 쿼리하여 수정을 더 쉽게 수행할 수 있습니다.

반환된 PacketCount는 WaveRT 버퍼에서 하드웨어로 완전히 전송된 패킷의 (1부터 시작하는) 수를 나타냅니다. 이를 통해 OS는 현재 전송 중인 패킷의 0부터 시작하는 수를 확인하고 해당 패킷보다 먼저 기록되도록 할 수 있습니다. 예를 들어 패킷 수가 5이면 5개의 패킷이 완전히 전송됩니다. 즉, 패킷 0-4가 완전히 전송되었습니다. 따라서 패킷 5가 진행 중이며 OS는 패킷 6을 작성해야 합니다. WaveRT 버퍼에 대한 알림 수가 2이면 패킷 6은 WaveRT 버퍼 내의 오프셋 0에 있습니다(6 모듈로 2는 0이고 패킷 크기는 0의 0배이기 때문).

OS는 언제든지 이 속성을 가져올 수 있습니다. 그러나 일반적으로 드라이버가 드라이버와 다시 동기화하기 위해 SetWritePacket()에서 데이터 흐름 오류(STATUS_DATA_LATE_ERROR, STATUS_DATA_OVERRUN)를 반환한 후에만 이 속성을 가져옵니다.

드라이버는 스트림이 KSSTATE_STOP 있을 때 패킷 수를 0으로 다시 설정해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10 이상에서 사용할 수 있습니다.
대상 플랫폼 Windows
헤더 portcls.h
IRQL 수동 수준

추가 정보

IMiniportWaveRTOutputStream