Freigeben über


IMiniportDMus::NewStream-Methode (dmusicks.h)

Die NewStream-Methode erstellt eine neue Instanz eines logischen Datenstroms, der einem angegebenen physischen Kanal zugeordnet ist.

Syntax

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
);

Parameter

[out] MXF

Ausgabezeiger für den neuen Datenstrom. Dieser Parameter verweist auf eine vom Aufrufer zugewiesene Zeigervariable, in die die Methode einen Zeiger auf die IMXF- schnittstelle des Datenstromobjekts schreibt.

[in, optional] OuterUnknown

Zeigen Sie auf die IUnknown Schnittstelle eines Objekts, das das Datenstromobjekt aggregieren muss. Dieser Parameter ist optional. Wenn keine Aggregation erforderlich ist, gibt der Aufrufer diesen Parameter als NULL-an.

[in] PoolType

Gibt den Typ des Speicherpools an, von dem der Speicher für das DMA-Kanalobjekt zugewiesen werden soll. Dieser Parameter wird auf einen der POOL_TYPE Enumerationswerte festgelegt.

[in] PinID

Gibt die Pin-ID an. Dieser Parameter identifiziert den Pin, der geöffnet werden soll. Wenn der DMus miniport-Treiber IMiniport::GetDescription Methode einen Filterdeskriptor ausgibt, der eine Summe von n Pin-Fabriken für den Filter angibt, befinden sich gültige Pin-IDs im Bereich 0 bis n-1.

[in] StreamType

Gibt den Typ des zu erstellenden Datenstroms an. Dieser Parameter wird auf einen der folgenden DMUS_STREAM_TYPE Enumerationswerte festgelegt:

DMUS_STREAM_MIDI_RENDER

Gibt einen MIDI-Ausgabedatenstrom (Wiedergabe) an.

DMUS_STREAM_MIDI_CAPTURE

Gibt einen MIDI-Eingabedatenstrom an.

DMUS_STREAM_WAVE_SINK

Gibt einen Wellenausgangsstrom an.

Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise".

[in] DataFormat

Zeiger auf einen Kernelstreaming KSDATAFORMAT- Struktur, die das für diese Instanz zu verwendende Datenformat angibt

[out] ServiceGroup

Ausgabezeiger für Dienstgruppe. Dieser Parameter verweist auf eine vom Aufrufer zugewiesene Zeigervariable, in die die Methode einen Zeiger auf die IServiceGroup- Schnittstelle des Dienstgruppenobjekts des Datenstroms schreibt. Dies ist die Dienstgruppe, die für die Unterbrechungsbenachrichtigung registriert wird.

[in] AllocatorMXF

Zeiger auf ein IAllocatorMXF--Objekt. Dies ist der Speicherzuordnungsserver des Porttreibers, der zum Recyceln DMUS_KERNEL_EVENT Strukturen benötigt wird.

[in] MasterClock

Zeiger auf ein IMasterClock--Objekt. Diese Masteruhr übergibt einen Wrapper für die KS-Uhr an den Miniporttreiber. Der Masteruhrzeiger ist erforderlich, um zur Referenzzeit zu synchronisieren.

[out] SchedulePreFetch

Ausgabezeiger für die Zeitplanvorschubzeit. Dieser Parameter ist ein Zeiger auf eine vom Aufrufer zugewiesene ULONGLONG-Variable, in die die Methode einen Zeitwert schreibt, der angibt, wie weit vor die Abfrage von Ereignissen liegt. Die Zeit wird in 100-Nanosekundeneinheiten angegeben. Der Porttreiber ist für die Sequenzierung von Ereignissen verantwortlich, die die Zeit überschreiten, die der Miniporttreiber hier angibt.

Rückgabewert

NewStream gibt S_OK zurück, wenn der Anruf erfolgreich war. Andernfalls gibt die Methode einen geeigneten Fehlercode zurück.

Bemerkungen

Beachten Sie, dass der Porttreiber das IAllocatorMXF Objekt erstellt, das von der NewStream-Methode über den pAllocatorMXF Parameter eingibt, aber der Miniporttreiber erstellt das IMXF--Objekt, das die Methode über den ppMXF Parameter ausgibt. Weitere Informationen zu IMXF- und IAllocatorMXF-finden Sie unter MIDI-Transport-.

Die Bedeutung des IMiniportDMus::NewStream StreamType- Parameters der IMiniportDMus::NewStream Methode ähnelt dem IMiniportMidi::NewStream-Parameter der Capture-Methode:

  • Beim Erstellen eines Datenstroms auf einem MIDI-Pin gibt der IMiniportMidi::NewStream Method's Capture Parameter an, ob der Pin als Spüle für einen MIDI-Renderdatenstrom (Capture = FALSE) oder als Quelle eines MIDI-Aufnahmedatenstroms (Capture = TRUE) dient.
  • Ebenso kann beim Erstellen eines Streams auf einem MIDI- oder DirectMusic-Pin der IMiniportDMus::NewStream-Parameter der Methode angegeben werden, ob der Pin als Spüle für einen MIDI-Renderdatenstrom (StreamType = DMUS_STREAM_MIDI_RENDER) oder als Quelle eines MIDI-Aufnahmedatenstroms (StreamType = DMUS_STREAM_MIDI_CAPTURE) dient.
Ein Pin auf einem DirectMusic-Filter kann jedoch eine dritte Option unterstützen, die nicht mit einem MIDI-Filter verfügbar ist. Ein Pin kann als Quelle eines Wellenausgabedatenstroms (StreamType- = DMUS_STREAM_WAVE_SINK) dienen. Der DMus-Porttreiber implementiert die Wellenspüle für diesen Datenstrom. Nach dem Erstellen des Wellenausgabedatenstroms fragt der DMus-Porttreiber das Datenstromobjekt (das der Porttreiber über die IMiniportDMus::NewStream Ausgabeparameter der Methode abruft) für seine ISynthSinkDMus- Schnittstelle ab. Die Wellenspüle des Porttreibers ruft die Render Methode auf dieser Schnittstelle auf, um Wellendaten aus dem Softwaresynthesizer abzurufen. Weitere Informationen finden Sie unter Eine Wellenspüle für Kernel-Mode SoftwareSynthesizer.

Die ppMXF, pOuterUnknown, ppServiceGroup-, pAllocatorMXF-und pMasterClock Parameter folgen den Konventionen zum Zählen von COM-Objekten.

Anforderungen

Anforderung Wert
Zielplattform- Desktop
Header- dmusicks.h (include Dmusicks.h)
IRQL- PASSIVE_LEVEL

Siehe auch

DMUS_KERNEL_EVENT

IAllocatorMXF-

IMXF-

IMasterClock-

IMiniport::GetDescription

IMiniportDMus

IMiniportMidi::NewStream

IServiceGroup-

ISynthSinkDMus

KSDATAFORMAT-

POOL_TYPE