Condividi tramite


Interfaccia IKsDataTypeHandler (ksproxy.h)

L'interfaccia IKsDataTypeHandler fornisce metodi che eseguono la pre-elaborazione facoltativa e la post-elaborazione degli 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.

Ereditarietà

L'interfaccia IKsDataTypeHandler eredita dall'interfaccia IUnknown .

Metodi

L'interfaccia IKsDataTypeHandler include 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 verifica 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 del tipo di dati.

Commenti

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. È necessario implementare un gestore dei tipi di dati come server COM che, almeno, supporta l'interfaccia IKsDataTypeHandler . Il gestore dei tipi di dati può supportare facoltativamente l'interfaccia IKsDataTypeCompletion .

Un gestore del tipo di dati viene in genere caricato durante il processo di connessione tramite pin e scaricato quando la connessione viene interrotta. Tuttavia, un gestore del tipo di dati viene talvolta caricato brevemente per altri scopi. Ad esempio, se un'applicazione usa il metodo IAMStreamConfig::SetFormat di DirectShow, l'applicazione usa possibilmente un gestore dei tipi 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 dei 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 dei tipi 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 alcun gestore durante il marshalling del flusso da o verso la modalità kernel o per eseguire qualsiasi altra attività necessaria.

In un gestore del tipo di dati creare una richiesta tramite CoCreateInstance, il server viene sempre presentato un IUnknown esterno con cui creare l'oggetto COM. Questo IUnknown è un'interfaccia sull'oggetto pin che sta caricando questo gestore. Il puntatore all'interfaccia IUnknown può essere usato per eseguire query su informazioni o interfacce dal pin, ad esempio le interfacce IKsPin o 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'utilizzo 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.

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione ksproxy.h

Vedi anche

IKsDataTypeCompletion