IMiniportWavePci::NewStream 메서드(portcls.h)

메서드는 NewStream 지정된 물리적 채널과 연결된 논리 스트림의 새 instance 만듭니다.

구문

NTSTATUS NewStream(
  [out]          PMINIPORTWAVEPCISTREAM *Stream,
  [in, optional] PUNKNOWN               OuterUnknown,
  [in]           POOL_TYPE              PoolType,
  [in]           PPORTWAVEPCISTREAM     PortStream,
  [in]           ULONG                  Pin,
  [in]           BOOLEAN                Capture,
  [in]           PKSDATAFORMAT          DataFormat,
  [out]          PDMACHANNEL            *DmaChannel,
  [out]          PSERVICEGROUP          *ServiceGroup
);

매개 변수

[out] Stream

새 스트림에 대한 출력 포인터입니다. 이 매개 변수는 메서드가 스트림 개체의 IMiniportWavePciStream 인터페이스에 대한 포인터를 작성하는 호출자 할당 포인터 변수를 가리킵니다. 호출자는 이 매개 변수에 대해 유효한 NULL 이 아닌 포인터를 지정합니다.

[in, optional] OuterUnknown

스트림 개체를 집계해야 하는 개체의 IUnknown 인터페이스에 대한 포인터입니다. 이 매개 변수는 선택적 요소입니다. 집계가 필요하지 않은 경우 호출자는 이 매개 변수를 NULL로 지정합니다.

[in] PoolType

DMA 채널 개체에 대한 스토리지를 할당해야 하는 메모리 풀의 유형을 지정합니다. 이 매개 변수는 POOL_TYPE 열거형에 정의된 페이지가 없는 풀 형식 중 하나입니다.

[in] PortStream

포트 드라이버 스트림 개체의 IPortWavePciStream 인터페이스에 대한 포인터입니다.

[in] Pin

열 핀을 식별하는 핀 ID를 지정합니다. WavePci 미니포트 드라이버의 필터 설명자가 필터에 대한 총 n 핀 팩터리를 지정하는 경우 매개 변수 Pin 에 대한 유효한 값은 0에서 n-1까지의 범위에 있습니다.

[in] Capture

캡처 스트림 또는 렌더링 스트림을 만들지 여부를 지정합니다. 이 매개 변수는 캡처(입력) 채널의 경우 TRUE 이고 재생(출력) 채널의 경우 FALSE 입니다.

[in] DataFormat

스트림의 데이터 형식을 지정하는 KSDATAFORMAT 구조체에 대한 포인터입니다.

[out] DmaChannel

DMA 채널에 대한 출력 포인터입니다. 이 매개 변수는 메서드가 스트림의 IDmaChannel 개체에 대한 포인터를 쓰는 호출자 할당 포인터 변수를 가리킵니다. 호출자는 이 매개 변수에 대해 유효한 NULL 이 아닌 포인터를 지정합니다.

[out] ServiceGroup

서비스 그룹에 대한 출력 포인터입니다. 이 매개 변수는 메서드가 스트림의 서비스 그룹 개체의 IServiceGroup 인터페이스에 대한 포인터를 작성하는 호출자 할당 포인터 변수를 가리킵니다. 인터럽트 알림을 위해 등록되는 서비스 그룹입니다. 호출자는 이 매개 변수에 대해 유효한 NULL 이 아닌 포인터를 지정합니다.

반환 값

NewStream 는 호출에 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 메서드는 적절한 오류 코드를 반환합니다.

설명

메서드는 NewStream 스트림의 초기 상태를 KSSTATE_STOP 초기 위치를 0으로 설정합니다. ( IMiniportWavePciStream::SetStateIMiniportWavePciStream::GetPosition을 참조하세요.)

스트림의 데이터 형식을 지정하는 DataFormat 매개 변수는 KSDATAFORMAT 구조체의 다음 오디오별 확장 버전 중 하나를 가리킵니다.

KSDATAFORMAT_WAVEFORMATEX

KSDATAFORMAT_DSOUND

미니포트 드라이버가 서비스 그룹 포인터를 제공하지 않는 경우(즉, 호출이 ServiceGroup 포인터를 통해 NULL을 출력하는 경우NewStream) 포트 드라이버는 스트림 위치 및 클록 이벤트를 처리하는 대신 자체 주기적 타이머를 설정합니다. 이 타이머의 기간은 현재 20밀리초이지만 이후 구현에서는 기간이 변경될 수 있습니다.

Stream, OuterUnknown, PortStreamServiceGroup 매개 변수는 COM 개체에 대한 참조 계산 규칙을 따릅니다.

NewStreamDmaChannel OUT 매개 변수를 통해 출력되는 포인터의 처리에서 일반적인 참조 계산 규칙을 따르지 않습니다. 포트 드라이버가 메서드의 다른 OUT 매개 변수인 StreamServiceGroup을 통해 NewStream 수신하는 참조를 사용하여 완료되면 예상대로 릴리스됩니다. 반면 포트 드라이버는 호출에서 수신하는 DmaChannel 포인터를 사용하지 않으며 DmaChannel 개체에서 NewStreamRelease를 호출하지 않습니다.

Microsoft WDK(Windows 드라이버 키트)의 ac97 샘플 오디오 드라이버는 이러한 동작을 반영합니다. 이 샘플의 IMiniportWavePci::NewStream 메서드 구현은 StreamAddRef를 호출하고 ServiceGroup은출력하지만 DmaChannel 참조는 참조하지 않습니다. 이 동작은 이전 버전과의 호환성을 위해 유지됩니다.

NewStream 다른 포트 형식(특히 WaveCyclic)에 대한 메서드는 모든 OUT 매개 변수에 대한 일반적인 참조 계산 규칙을 따릅니다.

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 portcls.h(Portcls.h 포함)
IRQL PASSIVE_LEVEL

추가 정보

IDmaChannel

IMiniportWavePci

IMiniportWavePciStream

IPortWavePciStream

IServiceGroup

KSDATAFORMAT

KSDATAFORMAT_DSOUND

KSDATAFORMAT_WAVEFORMATEX

POOL_TYPE