IMiniportWavePci::NewStream 메서드(portcls.h)
NewStream
메서드는 지정된 물리적 채널과 연결된 논리 스트림의 새 인스턴스를 만듭니다.
통사론
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::SetState 및 IMiniportWavePciStream::GetPosition참조하세요.)
스트림의 데이터 형식을 지정하는 DataFormat 매개 변수는 KSDATAFORMAT 구조의 다음 오디오별 확장 버전 중 하나를 가리킵니다.
미니포트 드라이버가 서비스 그룹 포인터를 제공하지 않는 경우(즉, NewStream
호출이 ServiceGroup 포인터를 통해 NULL 출력하는 경우) 포트 드라이버는 스트림 위치 및 클록 이벤트를 처리하는 대신 자체 주기적 타이머를 설정합니다. 이 타이머의 기간은 현재 20밀리초이지만 이후 구현에서는 해당 기간이 변경될 수 있습니다.
Stream, OuterUnknown, PortStream및 ServiceGroup 매개 변수는 COM 개체에 대한참조 계산 규칙을 따릅니다.
NewStream
DmaChannel OUT 매개 변수를 통해 출력하는 포인터 처리에서 일반적인 참조 계산 규칙을 따르지 않습니다. 포트 드라이버가 NewStream
메서드의 다른 OUT 매개 변수를 통해 수신하는 참조를 사용하여 완료되면 Stream 및 ServiceGroup 예상대로 릴리스됩니다. 반면 포트 드라이버는 NewStream
호출에서 수신하는 DmaChannel 포인터를 사용하지 않으며 DmaChannel 개체에서 Release 호출하지 않습니다.
Microsoft WDK(Windows 드라이버 키트)의 ac97 샘플 오디오 드라이버는 이 동작을 반영합니다. 이 샘플의 IMiniportWavePci::NewStream
메서드 구현은 StreamAddRef 호출하고 ServiceGroup은 DmaChannel 참조가 아니라 출력하는 참조를. 이 동작은 이전 버전과의 호환성을 위해 유지됩니다.
다른 포트 형식(특히 WaveCyclic)에 대한 NewStream
메서드는 모든 OUT 매개 변수에 대한 일반적인 참조 계산 규칙을 따릅니다.
요구 사항
요구 | 값 |
---|---|
대상 플랫폼 | 보편적 |
헤더 | portcls.h(Portcls.h 포함) |
IRQL | PASSIVE_LEVEL |