Interfaccia IKsInterfaceHandler (ksproxy.h)
L'interfaccia IKsInterfaceHandler fornisce metodi che eseguono il marshalling degli esempi nel kernel in base alla struttura KSPIN_INTERFACE specificata per la connessione stabilita. L'IID per questa interfaccia è IID_IKsInterfaceHandler.
Eredità
L'interfaccia IKsInterfaceHandler eredita dall'interfaccia IUnknown.
Metodi
L'interfaccia IKsInterfaceHandler dispone di questi metodi.
IKsInterfaceHandler::KsCompleteIo Il metodo KsCompleteIo pulisce le intestazioni estese e rilascia campioni multimediali al termine dell'input e dell'output (I/O). |
IKsInterfaceHandler::KsProcessMediaSamples Il metodo KsProcessMediaSamples elabora esempi multimediali. |
IKsInterfaceHandler::KsSetPin Il metodo KsSetPin informa il gestore dell'interfaccia di streaming sul pin con cui comunicare durante il passaggio dei dati. |
Osservazioni
Per mantenere il proxy neutro per quanto riguarda l'interfaccia usata per trasmettere i dati, i gestori di interfaccia vengono caricati per convertire gli esempi di supporti DirectShow in e da un driver a livello di kernel. Un gestore di interfaccia implementa i metodi dell'interfaccia IKsInterfaceHandler per eseguire la pre-elaborazione e la post-elaborazione in tutti i campioni multimediali e per segnalare il completamento dell'input e dell'output (I/O).
Ogni gestore di interfaccia può effettuare il marshalling di esempi di supporti usando il proprio metodo. Il gestore dell'interfaccia standard implementato dal proxy KS usa IOCTL_KS_WRITE_STREAM per l'operazione di ricezione e IOCTL_KS_READ_STREAM per l'operazione di invio, ma un gestore di interfaccia personalizzato può usare un altro metodo.
Quando un pin è connesso, il proxy usa il GUID nel Set membro della struttura KSPIN_INTERFACE per determinare il gestore dell'interfaccia da caricare. Il gestore dell'interfaccia viene registrato come server COM nella classe GUID. Il gestore dell'interfaccia deve gestire tutte le varianti dell'interfaccia all'interno del set di interfacce. I pin bridge non devono trasmettere i dati e i gestori dell'interfaccia non vengono caricati per loro.
In un gestore di interfaccia creare una richiesta tramite CoCreateInstance, il server viene sempre presentato un esterno IUnknown con cui creare l'oggetto COM. Questo IUnknown è un'interfaccia nell'oggetto pin che sta caricando questo gestore dell'interfaccia. Il puntatore IUnknown interfaccia può essere usato per eseguire query su informazioni o interfacce, ad esempio l'interfaccia IKsControl, dal pin, anche se il pin in modalità kernel potrebbe non essere stato creato al momento del caricamento del gestore dell'interfaccia. 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.
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Finestre |
intestazione | ksproxy.h |