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).
IMiniportDMus::NewStream
ISynthSinkDMus. 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 |