Freigeben über


IMiniportDMus::NewStream-Methode (dmusicks.h)

Die NewStream -Methode erstellt eine neue instance 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 Stream. Dieser Parameter verweist auf eine vom Aufrufer zugeordnete Zeigervariable, in die die Methode einen Zeiger auf die IMXF-Schnittstelle des Streamobjekts schreibt.

[in, optional] OuterUnknown

Zeiger auf die IUnknown-Schnittstelle eines Objekts, das das Streamobjekt 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, aus dem der Speicher für das DMA-Kanalobjekt zugeordnet werden soll. Dieser Parameter ist 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 die IMiniport::GetDescription-Methode des DMus-Miniporttreibers einen Filterdeskriptor ausgibt, der insgesamt n Pin-Fabriken für den Filter angibt, liegen gültige Pin-IDs im Bereich von 0 bis n-1.

[in] StreamType

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

DMUS_STREAM_MIDI_RENDER

Gibt einen MIDI-Ausgabedatenstrom (Wiedergabedatenstrom) an.

DMUS_STREAM_MIDI_CAPTURE

Gibt einen MIDI-Eingabestream an.

DMUS_STREAM_WAVE_SINK

Gibt einen Wellenausgabestream an.

Weitere Informationen finden Sie im folgenden Abschnitt "Hinweise".

[in] DataFormat

Zeiger auf eine Kernelstreaming-KSDATAFORMAT-Struktur, die das datenformat angibt, das für diese instance

[out] ServiceGroup

Ausgabezeiger für Dienstgruppe. Dieser Parameter verweist auf eine vom Aufrufer zugeordnete 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 die Speicherzuweisung des Porttreibers, die benötigt wird, um DMUS_KERNEL_EVENT Strukturen wiederzuverwenden.

[in] MasterClock

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

[out] SchedulePreFetch

Ausgabezeiger für die Zeitplan-Vorabrufzeit. Dieser Parameter ist ein Zeiger auf eine vom Aufrufer zugewiesene ULONGLONGLONG-Variable, in die die Methode einen Zeitwert schreibt, der angibt, wie weit voraus nach Ereignissen abzufragen ist. Die Zeit wird in 100 Nanosekundeneinheiten angegeben. Der Porttreiber ist für die Sequenzierung von Ereignissen verantwortlich, die die vom Miniporttreiber hier festgelegte Zeitspanne überschreiten.

Rückgabewert

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

Hinweise

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

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

  • Beim Erstellen eines Streams auf einem MIDI-Pin gibt der Capture-Parameter der IMiniportMidi::NewStream-Methode an, ob der Pin als Senke für einen MIDI-Renderstream (Capture = FALSE) oder als Quelle eines MIDI-Aufnahmestreams (Capture = TRUE) dienen soll.
  • Ebenso kann der StreamType-Parameter der IMiniportDMus::NewStream Methode beim Erstellen eines Streams auf einem MIDI- oder DirectMusic-Pin angeben, ob der Pin als Senke für einen MIDI-Renderstream (StreamType = DMUS_STREAM_MIDI_RENDER) oder als Quelle eines MIDI-Aufnahmestreams (StreamType = DMUS_STREAM_MIDI_CAPTURE) dienen soll.
Ein Pin an einem DirectMusic-Filter kann jedoch eine dritte Option unterstützen, die mit einem MIDI-Filter nicht verfügbar ist. Ein Pin kann als Quelle eines Wellenausgabestreams dienen (StreamType = DMUS_STREAM_WAVE_SINK). Der DMus-Porttreiber implementiert die Wellensenke für diesen Stream. Nach dem Erstellen des Wellenausgabedatenstroms fragt der DMus-Porttreiber das Streamobjekt (das der Porttreiber über den ppMXF-Ausgabeparameter der IMiniportDMus::NewStream Methode abruft) für seine ISynthSinkDMus-Schnittstelle ab. Die Wellensenke des Porttreibers ruft die Render-Methode auf dieser Schnittstelle auf, um Wellendaten aus dem Softwaresynthesizer zu pullen. Weitere Informationen finden Sie unter Eine Wellensenke für Kernel-Mode Softwaresynthesizer.

Die Parameter ppMXF, pOuterUnknown, ppServiceGroup, pAllocatorMXF und pMasterClock folgen den Referenzzählungskonventionen für COM-Objekte.

Anforderungen

Anforderung Wert
Zielplattform Desktop
Kopfzeile dmusicks.h (einschließlich Dmusicks.h)
IRQL PASSIVE_LEVEL

Weitere Informationen

DMUS_KERNEL_EVENT

IAllocatorMXF

IMXF

IMasterClock

IMiniport::GetDescription

IMiniportDMus

IMiniportMidi::NewStream

IServiceGroup

ISynthSinkDMus

KSDATAFORMAT

POOL_TYPE