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,
                 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 all'interfaccia IMXF dell'oggetto di flusso.

[in, optional] OuterUnknown

Puntatore all'interfaccia IUnknown di un oggetto che deve aggregare l'oggetto di flusso. Questo parametro è facoltativo. Se l'aggregazione non è necessaria, 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 .

PinID

[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 all'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 le strutture DMUS_KERNEL_EVENT .

[in] MasterClock

Puntatore a un oggetto IMasterClock . Questo orologio master passa un wrapper per l'orologio KS al driver miniport. Il puntatore dell'orologio master è necessario per sincronizzare l'ora di riferimento.

[out] SchedulePreFetch

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

Valore restituito

NewStream restituisce S_OK se la chiamata ha 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 che il NewStream metodo inserisce tramite il parametro pAllocatorMXF , ma il driver miniport crea l'oggetto IMXF che il metodo restituisce tramite il parametro ppMXF . Per altre informazioni su IMXF e IAllocatorMXF, vedere 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 (CaptureFALSE) o come origine di un flusso di acquisizioneMIDI ( = Capture = TRUE).
  • Analogamente, quando si crea un flusso in un pin MIDI o DirectMusic, il IMiniportDMus::NewStream parametro StreamType del metodo può indicare se il pin è quello di servire come 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 di porta DMus esegue una query sull'oggetto di flusso (che il driver di porta ottiene tramite il parametro di output ppMXF del metodo) per l'interfaccia IMiniportDMus::NewStreamISynthSinkDMus. Il sink dell'onda del driver di porta chiama il metodo Render su questa interfaccia per eseguire il pull dei dati dell'onda 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

   
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