Metodo IMiniportDMus::NewStream (dmusicks.h)

Il NewStream metodo crea una nuova istanza di un flusso logico associato a un canale fisico specificato.

Sintassi

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

Parametri

[out] MXF

Puntatore di output per il nuovo flusso. Questo parametro punta a una variabile puntatore allocata dal chiamante in cui il metodo scrive un puntatore nell'interfaccia IMXF dell'oggetto flusso.

[in, optional] OuterUnknown

Puntatore all'interfaccia IUnknown di un oggetto che deve aggregare l'oggetto flusso. Questo parametro è facoltativo e, Se l'aggregazione non è obbligatoria, il chiamante specifica questo parametro come NULL.

[in] PoolType

Specifica il tipo di pool di memoria da cui deve essere allocata l'archiviazione per l'oggetto canale DMA. Questo parametro è impostato su uno dei valori di enumerazione POOL_TYPE .

[in] PinID

Specifica l'ID pin. Questo parametro identifica il pin da aprire. Se il metodo IMiniport::GetDescription del driver DMus miniport restituisce un descrittore di filtro che specifica un totale di n pin factory nel filtro, gli ID pin validi sono inclusi nell'intervallo da 0 a n-1.

[in] StreamType

Specifica il tipo di flusso di dati da creare. Questo parametro è impostato su uno dei valori di enumerazione seguenti DMUS_STREAM_TYPE:

DMUS_STREAM_MIDI_RENDER

Specifica un flusso di output MIDI (riproduzione).

DMUS_STREAM_MIDI_CAPTURE

Specifica un flusso di input MIDI.

DMUS_STREAM_WAVE_SINK

Specifica un flusso di output dell'onda.

Per ulteriori informazioni, vedere la sezione Osservazioni successiva.

[in] DataFormat

Puntatore a una struttura KSDATAFORMAT di streaming del kernel che specifica il formato di dati da usare per questa istanza

[out] ServiceGroup

Puntatore di output per il gruppo di servizi. Questo parametro punta a una variabile puntatore allocata dal chiamante in cui il metodo scrive un puntatore nell'interfaccia IServiceGroup dell'oggetto gruppo di servizi del flusso. Si tratta del gruppo di servizi che viene registrato per la notifica di interruzione.

[in] AllocatorMXF

Puntatore a un oggetto IAllocatorMXF . Si tratta dell'allocatore di memoria del driver di porta, necessario per riciclare DMUS_KERNEL_EVENT strutture.

[in] MasterClock

Puntatore a un oggetto IMasterClock . Questo orologio master passa un wrapper per l'orologio KS al driver miniport. Il puntatore master-clock è necessario per eseguire la sincronizzazione con l'ora di riferimento.

[out] SchedulePreFetch

Puntatore di output per l'ora di prelettura della pianificazione. Questo parametro è un puntatore a una variabile ULONG allocata dal chiamante in cui il metodo scrive un valore di ora che specifica la distanza di esecuzione della query per gli eventi. L'ora viene specificata in unità di 100 nanosecondi. Il driver della porta è responsabile della sequenziazione di eventi che superano la quantità di tempo specificata dal driver miniport.

Valore restituito

NewStream restituisce S_OK se la chiamata ha avuto esito positivo. In caso contrario, il metodo restituisce un codice di errore appropriato.

Commenti

Si noti che il driver di porta crea l'oggetto IAllocatorMXF immesso dal NewStream metodo tramite il parametro pAllocatorMXF , ma il driver miniport crea l'oggetto IMXF restituito dal metodo tramite il parametro ppMXF . Per altre informazioni su IMXF e IAllocatorMXF, vedi Trasporto MIDI.

Il significato del IMiniportDMus::NewStream parametro StreamType del metodo è simile a quello del parametro Capture del metodo IMiniportMidi::NewStream:

  • Quando si crea un flusso su un pin MIDI, il parametro Capture del metodo IMiniportMidi::NewStream indica se il pin deve fungere da sink per un flusso di rendering MIDI (Capture = FALSE) o come origine di un flusso di acquisizione MIDI (Capture = TRUE).
  • Analogamente, quando si crea un flusso su un pin MIDI o DirectMusic, il IMiniportDMus::NewStream parametro StreamType del metodo può indicare se il pin deve fungere da sink per un flusso di rendering MIDI (StreamType = DMUS_STREAM_MIDI_RENDER) o come origine di un flusso di acquisizione MIDI (StreamType = DMUS_STREAM_MIDI_CAPTURE).
Tuttavia, un pin su un filtro DirectMusic può supportare una terza opzione che non è disponibile con un filtro MIDI. Un pin può fungere da origine di un flusso di output dell'onda (StreamType = DMUS_STREAM_WAVE_SINK). Il driver di porta DMus implementa il sink di onda per questo flusso. Dopo aver creato il flusso di output dell'onda, il driver della porta DMus esegue una query sull'oggetto flusso (che il driver di porta ottiene tramite il parametro di output ppMXF del metodo) per l'interfaccia IMiniportDMus::NewStreamISynthSinkDMus. Il sink d'onda del driver di porta chiama il metodo Render su questa interfaccia per eseguire il pull dei dati wave dal sintetizzatore software. Per altre informazioni, vedere Un sink wave per Kernel-Mode sintetizzatori software.

I parametri ppMXF, pOuterUnknown, ppServiceGroup, pAllocatorMXF e pMasterClock seguono le convenzioni di conteggio dei riferimenti per gli oggetti COM.

Requisiti

Requisito Valore
Piattaforma di destinazione Desktop
Intestazione dmusicks.h (include Dmusicks.h)
IRQL PASSIVE_LEVEL

Vedi anche

DMUS_KERNEL_EVENT

IAllocatorMXF

IMXF

IMasterClock

IMiniport::GetDescription

IMiniportDMus

IMiniportMidi::NewStream

IServiceGroup

ISynthSinkDMus

KSDATAFORMAT

POOL_TYPE