Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il metodo NewStream 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. 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.
[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 compresi 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 DMUS_STREAM_TYPE seguenti:
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 delle onde.
Per altre informazioni, vedere la sezione Osservazioni seguente.
[in] DataFormat
Puntatore a una struttura KSDATAFORMAT in 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 dell'oggetto gruppo di servizi del flusso IServiceGroup. Si tratta del gruppo di servizi registrato per la notifica di interrupt.
[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 sincronizzare l'ora di riferimento.
[out] SchedulePreFetch
Puntatore di output per l'ora di prelettura della pianificazione. Questo parametro è un puntatore a una variabile ULONGLONG 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à da 100 nanosecondi. Il driver della porta è responsabile della sequenziazione di tutti gli 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.
Osservazioni:
Si noti che il driver della 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::NewStreamparametro 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).
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 | Schermo |
| intestazione | dmusicks.h (include Dmusicks.h) |
| IRQL | LIVELLO PASSIVO |