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

SetWritePacket은 OS가 WaveRT 버퍼에 유효한 데이터를 작성했음을 드라이버에 알릴 수 있습니다.

구문

NTSTATUS SetWritePacket(
  [in] ULONG PacketNumber,
  [in] DWORD Flags,
  [in] ULONG EosPacketLength
);

매개 변수

[in] PacketNumber

OS에서 WaveRT 버퍼에 쓴 패킷의 수입니다.

[in] Flags

패킷 또는 스트림과 관련된 추가 특성입니다.

KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM - 이 플래그는 이 패킷이 데이터 스트림의 끝을 나타낸다는 것을 나타냅니다.

[in] EosPacketLength

KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM 플래그에 지정된 경우 EOS 패킷의 길이입니다. 0은 유효한 값입니다. 플래그에 KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM 지정되지 않은 경우 이 매개 변수는 무시됩니다.

반환 값

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

STATUS_DATA_LATE_ERROR – OS가 이미 전송되었거나 현재 전송 중인 패킷 번호를 전달하면 드라이버가 이 오류를 반환합니다. 이 경우 결함이 발생했습니다. 드라이버는 필요에 따라 패킷의 일부 데이터를 사용하거나 이전에 이 패킷 번호에 기록된 데이터를 계속 재생할 수 있습니다.

STATUS_DATA_OVERRUN – OS가 WaveRT 버퍼에 저장할 수 있는 것보다 높은 패킷 번호를 전달하면 드라이버가 이 오류를 반환합니다. 이 경우 결함이 발생했습니다. 드라이버는 필요에 따라 패킷의 데이터를 무시할 수 있습니다.

STATUS_INVALID_DEVICE_STATE – OS가 이전에 KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM 플래그를 설정한 후 이 루틴을 호출하면 드라이버가 이 오류를 반환합니다.

STATUS_INVALID_PARAMETER – 다른 오류 상태 대한 특정 사례 외에 다른 매개 변수가 유효하지 않은 것으로 확인되면 드라이버가 이 오류를 반환합니다. 여기에는 위에서 구체적으로 정의되지 않은 플래그 값이 포함됩니다.

설명

OS에서 이 루틴을 호출한 후 드라이버는 필요에 따라 제공된 정보를 사용하여 하드웨어 전송을 최적화할 수 있습니다. 예를 들어 드라이버는 DMA 전송을 최적화하거나 OS가 이 루틴을 다시 호출하여 다른 패킷을 드라이버에 알리지 않는 경우 지정된 패킷의 끝에서 전송을 중지하도록 프로그램 하드웨어를 최적화할 수 있습니다. 이렇게 하면 순환 버퍼를 반복하는 대신 가청 간격을 도입하는 등 언더플로의 가청 효과를 완화할 수 있습니다. 그러나 드라이버는 여전히 명목상 실시간 속도로 내부 패킷 카운터 및 신호 알림 이벤트를 늘릴 의무가 있습니다.

OS가 KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM 플래그를 지정하는 경우를 제외하고 패킷 크기는 IMiniportWaveRTStreamNotification::AllocateBufferWithNotification에 전달된 NotificationCount로 나눈 WaveRT 버퍼 크기입니다.

하드웨어 기능에 따라 KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM 플래그가 지정된 경우 하드웨어가 EOS 위치 이상으로 데이터를 전송하는 경우 드라이버가 EOS 패킷 뒤에 있는 WaveRT 버퍼의 일부를 무음으로 채울 수 있습니다.

요구 사항

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

추가 정보

IMiniportWaveRTOutputStream