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 | 수동 수준 |