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.
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 |