Share via


Klasse IServiceProviderImpl

Opmerking

De ATL (Active Template Library) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.

Deze klasse biedt een standaard implementatie van de IServiceProvider interface.

Syntaxis

template <class T>
class ATL_NO_VTABLE IServiceProviderImpl : public IServiceProvider

Parameterwaarden

T
Uw klas, afgeleid van IServiceProviderImpl.

Leden

Openbare methoden

Naam Description
IServiceProviderImpl::QueryService Hiermee maakt of opent u de opgegeven service en retourneert u een interfaceaanwijzer naar de opgegeven interface voor de service.

Opmerkingen

De IServiceProvider interface zoekt een service die is opgegeven door de GUID en retourneert de interfacepointer voor de aangevraagde interface in de service. Klasse IServiceProviderImpl biedt een standaard implementatie van deze interface.

IServiceProviderImpl geeft één methode op: QueryService, die de opgegeven service maakt of opent en een interfaceaanwijzer retourneert naar de opgegeven interface voor de service.

IServiceProviderImpl maakt gebruik van een serviceoverzicht, te beginnen met BEGIN_SERVICE_MAP en eindigt met END_SERVICE_MAP.

De servicetoewijzing bevat twee vermeldingen: SERVICE_ENTRY, die een opgegeven service-id (SID) aangeeft die door het object wordt ondersteund en SERVICE_ENTRY_CHAIN, die aanroept QueryService om aan een ander object te koppelen.

Overnamehiërarchie

IServiceProvider

IServiceProviderImpl

Requirements

Koptekst: atlcom.h

IServiceProviderImpl::QueryService

Hiermee maakt of opent u de opgegeven service en retourneert u een interfaceaanwijzer naar de opgegeven interface voor de service.

STDMETHOD(QueryService)(
    REFGUID guidService,
    REFIID riid,
    void** ppvObject);

Parameterwaarden

guidService
[in] Wijs een service-id (SID) aan.

riid
[in] Id van de interface waartoe de aanroeper toegang moet krijgen.

ppvObj
[uit] Indirecte aanwijzer naar de aangevraagde interface.

Retourwaarde

De geretourneerde HRESULT-waarde is een van de volgende:

Retourwaarde Meaning
S_OK De service is gemaakt of opgehaald.
E_INVALIDARG Een of meer argumenten zijn ongeldig.
E_OUTOFMEMORY Geheugen is onvoldoende om de service te maken.
E_UNEXPECTED Er is een onbekende fout opgetreden.
E_NOINTERFACE De aangevraagde interface maakt geen deel uit van deze service of de service is onbekend.

Opmerkingen

QueryService retourneert een indirecte aanwijzer naar de aangevraagde interface in de opgegeven service. De beller is verantwoordelijk voor het vrijgeven van deze aanwijzer wanneer deze niet meer nodig is.

Wanneer u aanroept QueryService, geeft u zowel een service-id (guidService) als een interface-id (riid) door. De guidService geeft de service aan waartoe u toegang wilt en de riid identificeert een interface die deel uitmaakt van de service. Als resultaat ontvangt u een indirecte aanwijzer naar de interface.

Het object dat de interface implementeert, kan ook interfaces implementeren die deel uitmaken van andere services. Houd rekening met het volgende:

  • Sommige van deze interfaces zijn mogelijk optioneel. Niet alle interfaces die in de servicebeschrijving zijn gedefinieerd, zijn noodzakelijkerwijs aanwezig bij elke implementatie van de service of op elk geretourneerd object.

  • In tegenstelling tot aanroepen, QueryInterfacebetekent het doorgeven van een andere service-id niet noodzakelijkerwijs dat een ander COM-object (Component Object Model) wordt geretourneerd.

  • Het geretourneerde object heeft mogelijk extra interfaces die geen deel uitmaken van de definitie van de service.

Twee verschillende services, zoals SID_SMyService en SID_SYourService, kunnen beide het gebruik van dezelfde interface opgeven, ook al heeft de implementatie van de interface mogelijk niets gemeen tussen de twee services. Dit werkt omdat een aanroep naar QueryService (SID_SMyService, IID_IDispatch) een ander object kan retourneren dan QueryService (SID_SYourService, IID_IDispatch). Objectidentiteit wordt niet verondersteld wanneer u een andere service-id opgeeft.

Zie ook

Overzicht van klassen