Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu sınıf, arabiriminin IServiceProvider varsayılan uygulamasını sağlar.
Sözdizimi
template <class T>
class ATL_NO_VTABLE IServiceProviderImpl : public IServiceProvider
Parametreler
T
sınıfından IServiceProviderImpltüretilen sınıfınız.
Üyeler
Genel Yöntemler
| Veri Akışı Adı | Açıklama |
|---|---|
| IServiceProviderImpl::QueryService | Belirtilen hizmeti oluşturur veya bu hizmete erişir ve hizmet için belirtilen arabirime bir arabirim işaretçisi döndürür. |
Açıklamalar
Arabirim, IServiceProvider GUID'i tarafından belirtilen bir hizmeti bulur ve hizmette istenen arabirim için arabirim işaretçisini döndürür. Sınıfı IServiceProviderImpl , bu arabirimin varsayılan uygulamasını sağlar.
IServiceProviderImpl tek bir yöntem belirtir: Belirtilen hizmeti oluşturan veya bu hizmete erişen ve hizmet için belirtilen arabirime bir arabirim işaretçisi döndüren QueryService.
IServiceProviderImplBEGIN_SERVICE_MAP ile başlayıp END_SERVICE_MAP ile biten bir hizmet eşlemesi kullanır.
Hizmet eşlemesi iki giriş içerir: nesne tarafından desteklenen belirtilen hizmet kimliğini (SID) gösteren SERVICE_ENTRY ve başka bir nesneye zincirleme çağrısı QueryService yapan SERVICE_ENTRY_CHAIN.
Devralma Hiyerarşisi
IServiceProvider
IServiceProviderImpl
Gereksinimler
Üst bilgi: atlcom.h
IServiceProviderImpl::QueryService
Belirtilen hizmeti oluşturur veya bu hizmete erişir ve hizmet için belirtilen arabirime bir arabirim işaretçisi döndürür.
STDMETHOD(QueryService)(
REFGUID guidService,
REFIID riid,
void** ppvObject);
Parametreler
guidService
[in] Hizmet tanımlayıcısı (SID) işaretçisi.
riid
[in] Çağıranın erişim kazanmak için olduğu arabirimin tanımlayıcısı.
ppvObj
[out] İstenen arabirime dolaylı işaretçi.
Dönüş Değeri
Döndürülen HRESULT değeri aşağıdakilerden biridir:
| Dönüş değeri | Anlamı |
|---|---|
| S_OK | Hizmet başarıyla oluşturuldu veya alındı. |
| E_INVALIDARG | Bir veya daha fazla bağımsız değişken geçersiz. |
| E_OUTOFMEMORY | Bellek, hizmeti oluşturmak için yetersiz. |
| E_UNEXPECTED | Bilinmeyen bir hata oluştu. |
| E_NOINTERFACE | İstenen arabirim bu hizmetin parçası değil veya hizmet bilinmiyor. |
Açıklamalar
QueryService belirtilen hizmette istenen arabirime yönelik dolaylı bir işaretçi döndürür. Çağıran, artık gerekli olmadığında bu işaretçiyi serbest bırakmakla sorumludur.
çağırdığınızda QueryService, hem bir hizmet tanımlayıcısı (guidService) hem de arabirim tanımlayıcısı (riid) geçirirsiniz. guidService, erişim istediğiniz hizmeti belirtir ve riid hizmetin parçası olan bir arabirimi tanımlar. Buna karşılık, arabirimine yönelik dolaylı bir işaretçi alırsınız.
Arabirimi uygulayan nesne, diğer hizmetlerin parçası olan arabirimleri de uygulayabilir. Aşağıdaki topluluklara bir göz atın:
Bu arabirimlerden bazıları isteğe bağlı olabilir. Hizmet açıklamasında tanımlanan tüm arabirimler, hizmetin her uygulamasında veya döndürülen her nesnede mutlaka mevcut değildir.
çağrısının
QueryInterfaceaksine, farklı bir hizmet tanımlayıcısı geçirmek, farklı bir Bileşen Nesne Modeli (COM) nesnesinin döndürülmesi anlamına gelmez.Döndürülen nesne, hizmet tanımının parçası olmayan ek arabirimlere sahip olabilir.
SID_SMyService ve SID_SYourService gibi iki farklı hizmet, arabirimin uygulanması iki hizmet arasında ortak bir şey olmasa bile aynı arabirimin kullanımını belirtebilir. Çağrısı (SID_SMyService, IID_IDispatch) farklı bir nesne QueryService döndürebileceğinden (SID_SYourService, IID_IDispatch) bu işe yarar QueryService . Farklı bir hizmet tanımlayıcısı belirttiğinizde nesne kimliği varsayılmaz.