IMiniportDMus::NewStream 메서드(dmusicks.h)

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

구문

NTSTATUS NewStream(
  [out]          PMXF             *MXF,
  [in, optional] PUNKNOWN         OuterUnknown,
  [in]           POOL_TYPE        PoolType,
  [in]           ULONG            PinID,
  [in]           DMUS_STREAM_TYPE StreamType,
  [in]           PKSDATAFORMAT    DataFormat,
  [out]          PSERVICEGROUP    *ServiceGroup,
  [in]           PAllocatorMXF    AllocatorMXF,
  [in]           PMASTERCLOCK     MasterClock,
  [out]          PULONGLONG       SchedulePreFetch
);

매개 변수

[out] MXF

새 스트림에 대한 출력 포인터입니다. 이 매개 변수는 메서드가 스트림 개체의 IMXF 인터페이스에 대한 포인터를 쓰는 호출자 할당 포인터 변수를 가리킵니다.

[in, optional] OuterUnknown

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

[in] PoolType

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

[in] PinID

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

[in] StreamType

만들 데이터 스트림의 형식을 지정합니다. 이 매개 변수는 다음 DMUS_STREAM_TYPE 열거형 값 중 하나로 설정됩니다.

DMUS_STREAM_MIDI_RENDER

MIDI 출력(재생) 스트림을 지정합니다.

DMUS_STREAM_MIDI_CAPTURE

MIDI 입력 스트림을 지정합니다.

DMUS_STREAM_WAVE_SINK

웨이브 출력 스트림을 지정합니다.

자세한 내용은 아래 설명 부분을 참조하십시오.

[in] DataFormat

이 instance 사용할 데이터 형식을 지정하는 커널 스트리밍 KSDATAFORMAT 구조체에 대한 포인터입니다.

[out] ServiceGroup

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

[in] AllocatorMXF

IAllocatorMXF 개체에 대한 포인터입니다. DMUS_KERNEL_EVENT 구조를 재활용 하는 데 필요한 포트 드라이버의 메모리 할당자입니다.

[in] MasterClock

IMasterClock 개체에 대한 포인터입니다. 이 master 클록은 KS 클록의 래퍼를 미니포트 드라이버에 전달합니다. 참조 시간에 동기화하려면 master 클록 포인터가 필요합니다.

[out] SchedulePreFetch

schedule-prefetch 시간에 대한 출력 포인터입니다. 이 매개 변수는 호출자가 할당한 ULONGLONG 변수에 대한 포인터로, 메서드는 이벤트를 쿼리할 시간을 지정하는 시간 값을 씁니다. 시간은 100나노초 단위로 지정됩니다. 포트 드라이버는 미니포트 드라이버가 여기에 지정하는 시간을 초과하는 모든 이벤트를 시퀀싱해야 합니다.

반환 값

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

설명

포트 드라이버는 메서드가 pAllocatorMXF 매개 변수를 통해 입력하는NewStreamIAllocatorMXF 개체를 만들지만 미니포트 드라이버는 메서드가 ppMXF 매개 변수를 통해 출력하는 IMXF 개체를 만듭니다. IMXFIAllocatorMXF에 대한 자세한 내용은 MIDI 전송을 참조하세요.

메서드의 IMiniportDMus::NewStreamStreamType 매개 변수의 의미는 IMiniportMidi::NewStream 메서드의 Capture 매개 변수와 비슷합니다.

  • MIDI 핀에서 스트림을 만들 때 IMiniportMidi::NewStream 메서드의 Capture 매개 변수는 핀이 MIDI 렌더링 스트림의 싱크로 사용할지(FALSE캡처 = ) 또는 MIDI 캡처 스트림의 원본으로 사용할지(TRUE캡처 = ) 나타냅니다.
  • 마찬가지로 MIDI 또는 DirectMusic 핀 IMiniportDMus::NewStream 에서 스트림을 만들 때 메서드의 StreamType 매개 변수는 핀이 MIDI 렌더링 스트림(StreamType = DMUS_STREAM_MIDI_RENDER)의 싱크로 사용할지 또는 MIDI 캡처 스트림의 원본으로 사용할지 여부를 나타낼 수 있습니다(StreamType = DMUS_STREAM_MIDI_CAPTURE).
그러나 DirectMusic 필터의 핀은 MIDI 필터에서 사용할 수 없는 세 번째 옵션을 지원할 수 있습니다. 핀은 웨이브 출력 스트림의 원본으로 사용될 수 있습니다(StreamType = DMUS_STREAM_WAVE_SINK). DMus 포트 드라이버는 이 스트림에 대한 웨이브 싱크를 구현합니다. 웨이브 출력 스트림을 만든 후 DMus 포트 드라이버는 ISynthSinkDMus 인터페이스에 대해 스트림 개체(포트 드라이버가 메서드의 ppMXF 출력 매개 변수를 통해 IMiniportDMus::NewStream 가져오는)를 쿼리합니다. 포트 드라이버의 웨이브 싱크는 이 인터페이스의 Render 메서드를 호출하여 소프트웨어 신시사이저에서 웨이브 데이터를 가져옵니다. 자세한 내용은 Kernel-Mode Software Synthesizers용 웨이브 싱크를 참조하세요.

ppMXF, pOuterUnknown, ppServiceGroup, pAllocatorMXFpMasterClock 매개 변수는 COM 개체에 대한 참조 계산 규칙을 따릅니다.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 dmusicks.h(Dmusicks.h 포함)
IRQL PASSIVE_LEVEL

추가 정보

DMUS_KERNEL_EVENT

IAllocatorMXF

IMXF

IMasterClock

IMiniport::GetDescription

IMiniportDMus

IMiniportMidi::NewStream

IServiceGroup

ISynthSinkDMus

KSDATAFORMAT

POOL_TYPE