Sdílet prostřednictvím


IServiceProviderImpl::QueryService

Vytvoří nebo přistupuje k dané službě a vrátí ukazatele rozhraní zadané rozhraní služby.

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

Parametry

  • [V]guidService
    Ukazatel na identifikátoru služby (SID).

  • [V]riid
    Identifikátor rozhraní, které volající získat přístup.

  • [VÝSTUP]ppvObj
    Nepřímé ukazatele požadované rozhraní.

Vrácená hodnota

Vrácené HRESULT hodnota je jeden z následujících:

Vrácená hodnota

Význam

S_OK

Služba byla úspěšně vytvořena nebo načíst.

E_INVALIDARG

Jeden nebo více parametrů je neplatný.

CHYBA E_OUTOFMEMORY

Paměť je nedostatečná vytvořit službu.

E_UNEXPECTED

Došlo k neznámé chybě.

E_NOINTERFACE

Požadované rozhraní není součástí této služby nebo služby neznámý.

Poznámky

QueryServicenepřímý ukazatel vrátí požadované rozhraní zadané služby.Volající je odpovědná za uvolňování tento ukazatel, pokud již není vyžadováno.

Při volání QueryService , předat i identifikátor služby (guidService) a identifikátor rozhraní (riid). guidService Určuje službu, na kterou chcete přístup, a riid označuje rozhraní, který je součástí služby.Na oplátku obdržíte nepřímý ukazatel rozhraní.

Objekt, který implementuje rozhraní může být také implementovat rozhraní, které jsou součástí jiné služby.Zvažte následující:

  • Některé z těchto rozhraní mohou být nepovinné.Všechna rozhraní definované v popisu služby jsou nutně přítomna v každém zavádění služby nebo na každý vrácený objekt.

  • Na rozdíl od volání QueryInterface , předávání identifikátor jinou službu nemusí nutně znamenat, že jiný objekt modelu COM (Component Object), je vrácena.

  • Vrácený objekt může mít další rozhraní, které nejsou součástí definice služby.

Dvě různé služby, například SID_SMyService a SID_SYourService, oba určit použití stejné rozhraní, přestože implementaci rozhraní pravděpodobně nemají nic společného mezi dvě služby.Toto funguje, protože volání QueryService (SID_SMyService, IID_IDispatch) se můžete vrátit jiný objekt než QueryService (SID_SYourService, IID_IDispatch).Identita objektu není předpokládá, že zadáte identifikátor jinou službu.

Požadavky

Záhlaví: atlcom.h

Viz také

Referenční dokumentace

Třída IServiceProviderImpl

BEGIN_SERVICE_MAP