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

추가 정보

IMiniportWaveRTInputStream