Interfaccia IKsDataTypeHandler (ksproxy.h)
L'interfaccia IKsDataTypeHandler fornisce metodi che eseguono pre-elaborazione e post-elaborazione facoltativi di esempi multimediali. Questa interfaccia può anche restituire le dimensioni delle informazioni aggiuntive sull'intestazione del flusso necessarie per l'elaborazione e può determinare se un particolare tipo di supporto si trova all'interno di un determinato set di intervalli di dati di streaming del kernel.
L'IID per questa interfaccia è IID_IKsDataTypeHandler.
Eredità
L'interfaccia IKsDataTypeHandler eredita dall'interfaccia IUnknown.
Metodi
L'interfaccia IKsDataTypeHandler dispone di questi metodi.
IKsDataTypeHandler::KsCompleteIoOperation Il metodo KsCompleteIoOperation pulisce l'intestazione estesa e completa l'operazione di input e output (I/O). |
IKsDataTypeHandler::KsIsMediaTypeInRanges Il metodo KsIsMediaTypeInRanges convalida che un tipo di supporto si trova all'interno degli intervalli di dati forniti. |
IKsDataTypeHandler::KsPrepareIoOperation Il metodo KsPrepareIoOperation inizializza l'intestazione estesa e prepara l'esempio multimediale per un'operazione di I/O. |
IKsDataTypeHandler::KsQueryExtendedSize Il metodo KsQueryExtendedSize recupera le informazioni di intestazione estese necessarie per le operazioni di input e output (I/O). |
IKsDataTypeHandler::KsSetMediaType Il metodo KsSetMediaType imposta il tipo di supporto per un gestore dei tipi di dati. |
Osservazioni
Per mantenere neutro il tipo di dati proxy, è possibile caricare i gestori dei tipi di dati facoltativi per massaggiare il flusso di dati durante il passaggio o dai filtri in modalità kernel. È consigliabile implementare un gestore dei tipi di dati come server COM che, almeno, supporta l'interfaccia IKsDataTypeHandler. Il gestore dei tipi di dati può facoltativamente supportare l'interfaccia IKsDataTypeCompletion.
Un gestore del tipo di dati viene in genere caricato durante il processo di connessione del pin e scaricato quando la connessione viene interrotta. Tuttavia, un gestore dei tipi di dati viene talvolta caricato brevemente per altri scopi. Ad esempio, se un'applicazione usa il metodo IAMStreamConfig::SetFormat di DirectShow, l'applicazione può usare un gestore del tipo di dati per completare un parametro di tipo di supporto parziale inviato al metodo .
Il proxy usa i GUID del tipo di supporto come classi server COM per determinare se un gestore di tipi di dati da caricare. Se il gestore dei tipi di dati viene registrato come server COM in una classe GUID prevista cercata dal proxy, viene caricato il gestore del tipo di dati. Il tipo di formato principale viene prima utilizzato per tentare di aprire un server COM del gestore dei tipi di dati, seguito dal sottotipo e dall'identificatore di formato se l'apertura del gestore del tipo di dati non riesce usando il tipo di formato principale. Se uno dei tentativi ha esito positivo, il proxy esegue una query per l'interfaccia IKsDataTypeHandler e chiama il metodo KsSetMediaType dell'interfaccia per stabilire il tipo di supporto corrente usato con il gestore, nel caso in cui il gestore supporti molti tipi. Se non viene trovato alcun gestore, il proxy presuppone che non sia necessario eseguire il marshalling del flusso da o verso la modalità kernel o per eseguire altre attività necessarie.
In un gestore del tipo di dati creare una richiesta tramite CoCreateInstance, il server viene sempre presentato un esterno IUnknown con cui creare l'oggetto COM. Questo IUnknown è un'interfaccia sull'oggetto pin che sta caricando questo gestore. Il puntatore IUnknown può essere usato per eseguire query su informazioni o interfacce dal pin, ad esempio i IKsPin o interfacce IKsControl, anche se il pin in modalità kernel potrebbe non essere stato creato al momento del caricamento del gestore. Nessun riferimento deve essere lasciato sull'oggetto esterno tramite l'acquisizione di interfacce, in quanto comporterà un conteggio di riferimenti circolari. L'uso delle interfacce senza un conteggio dei riferimenti è accettabile, perché l'oggetto esterno possiede il gestore e, per definizione, viene eliminato definitivamente quando il conteggio dei riferimenti dell'oggetto esterno raggiunge zero.
Per altre informazioni su IAMStreamConfig::SetFormat e CoCreateInstance, vedere la documentazione di Microsoft Windows SDK.
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Finestre |
intestazione | ksproxy.h |