IMiniportWaveRTInputStream::GetReadPacket 메서드(portcls.h)
캡처된 데이터에 대한 정보를 반환합니다.
구문
NTSTATUS GetReadPacket(
[out] ULONG *PacketNumber,
[out] DWORD *Flags,
[out] ULONG64 *PerformanceCounterValue,
[out] BOOL *MoreData
);
매개 변수
[out] PacketNumber
캡처 시작을 기준으로 패킷 번호를 반환합니다.
[out] Flags
다음에 사용하도록 예약됩니다. 0으로 설정해야 합니다.
[out] PerformanceCounterValue
패킷에서 첫 번째 샘플의 샘플링 인스턴트에 해당하는 성능 카운터 값을 반환합니다.
[out] MoreData
즉시 더 많은 데이터가 준비되면 TRUE 를 반환합니다. OS는 필요에 따라 패킷을 처리한 후 이 루틴을 즉시 다시 호출하여 다음 패킷 정보를 가져올 수 있습니다. 드라이버가 FALSE를 반환하면 캡처가 실시간으로 작동합니다.
반환 값
GetReadPacket
는 호출에 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 함수는 코드에 적절한 오류 상태 반환합니다.
STATUS_DEVICE_NOT_READY - 새 데이터를 사용할 수 없는 경우 드라이버가 이 오류를 반환합니다.
설명
WaveRT 버퍼에서 캡처된 오디오 데이터를 읽기 전에 OS는 이 루틴을 호출하여 사용 가능한 데이터에 대한 정보를 가져옵니다.
패킷 번호는 스트림 내의 패킷을 식별합니다. 스트림이 KSSTATE_STOP 있을 때 0으로 다시 설정됩니다. 캡처된 각 버퍼로 숫자가 진행됩니다. 패킷 번호에서 OS는 WaveRT 버퍼 내에서 패킷 위치를 파생시킬 수 있으며 스트림 시작을 기준으로 패킷의 스트림 위치를 파생시킬 수도 있습니다.
패킷 크기는 WaveRT 버퍼 크기를 IMiniportWaveRTStreamNotification::AllocateBufferWithNotification에 전달된 NotificationCount로 나눈 값입니다. OS는 언제든지 이 루틴을 호출할 수 있습니다. 정상 작업에서 OS는 드라이버가 버퍼 알림 이벤트를 설정한 후 또는 이전 호출이 MoreData에 대해 true를 반환한 후 이 루틴을 호출합니다. OS가 이 루틴을 호출할 때 드라이버는 OS가 이전의 모든 패킷 읽기를 완료한 것으로 가정할 수 있습니다. 하드웨어가 충분한 데이터를 캡처한 경우 드라이버는 즉시 다음 전체 패킷을 WaveRT 버퍼로 버스트하고 버퍼 이벤트를 다시 설정할 수 있습니다. 캡처 오버플로의 경우(OS가 데이터를 충분히 빨리 읽지 못하는 경우) 오디오 드라이버가 일부 오디오 데이터를 삭제하거나 덮어쓸 수 있습니다. 오디오 드라이버는 가장 오래된 데이터를 먼저 삭제하거나 덮어씁니다. 오디오 드라이버는 OS가 데이터를 읽지 못하더라도 내부 패킷 카운터를 계속 진행할 수 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 10 이상에서 사용할 수 있습니다. |
대상 플랫폼 | Windows |
헤더 | portcls.h |
IRQL | 수동 수준 |