Usare QueryService per recuperare un'interfaccia nativa per un oggetto IAccess
Gli sviluppatori del server possono usare questa tecnica per esporre un puntatore a un nodo documento personalizzato per un oggetto IAccessibile . Ciò presuppone che si espongono già oggetti IAccess . Questa tecnica consente ai client di ottenere un oggetto personalizzato da un oggetto IAccessibile .
Per esporre un modello a oggetti nativo per un oggetto IAccess (server)
- Aggiungere il supporto per l'interfaccia IServiceProvider nell'oggetto IAccess .
- Definire un GUID che rappresenta la funzionalità di ottenere l'interfaccia personalizzata da oggetti IAccessi . Viene chiamato ID servizio. È possibile usare GUIDGEN.EXE per generare un ID servizio o riutilizzare l'ID dell'interfaccia se si dispone di un'interfaccia personalizzata.
- Implementare il metodo IServiceProvider::QueryService in modo che restituisca un puntatore all'interfaccia personalizzata quando viene chiamato con l'ID servizio definito in precedenza in questa procedura. QueryService deve restituire NULL per tutti gli altri valori ID servizio.
- Pubblicare l'ID servizio in modo che i client possano usarli.
I client possono usare questa funzionalità per ottenere un puntatore all'oggetto personalizzato da un oggetto IAccessibile .
Per ottenere un puntatore a un oggetto personalizzato da un oggetto IAccess (client)
- Chiamare QueryInterface(IID_IServiceProvider) in un puntatore dell'interfaccia IAccessibile per ottenere un puntatore dell'interfaccia IServiceProvider .
- Chiamare IServiceProvider::QueryService con l'ID del servizio pubblicato per ottenere un puntatore all'oggetto personalizzato per IAccessibile.
- Rilasciare l'interfaccia IServiceProvider se non è più necessaria.
Per essere utilizzabile tra processi, i server potrebbero dover registrare l'interfaccia restituita con Component Object Model (COM).
Questa tecnica viene usata da Microsoft Internet Explorer 4.0 e versioni successive. Consente ai client di ottenere un puntatore dell'interfaccia IHTMLElement2 che corrisponde a un oggetto IAccess .