IServiceProviderImpl::QueryService
作成するか、指定したサービスにアクセス、およびサービスの特定のインターフェイスへのインターフェイス ポインターを返します。
STDMETHOD(QueryService)(
REFGUID guidService,
REFIID riid,
void** ppvObject
);
パラメーター
[入力] guidService
(SID) サービス識別子へのポインター。[入力] riid
呼び出し元がアクセスするためのインターフェイス ID。[入力] ppvObj
要求されたインターフェイスへの間接ポインター。
戻り値
HRESULT の返された値は次のいずれかです:
戻り値 |
説明 |
---|---|
S_OK |
サービスが正常に作成または取得されました。 |
E_INVALIDARG |
1 つ以上の引数が無効です。 |
E_OUTOFMEMORY |
メモリは、サービスを作成できないです。 |
E_UNEXPECTED |
不明なエラーが発生しました。 |
E_NOINTERFACE |
要求されたインターフェイスは、このサービスの一部ではない場合、またはサービスは不明です。 |
解説
QueryService は、指定したサービス要求されたインターフェイスには、間接ポインターを返します。 呼び出し元がなくなったら、このポインターの解放を管理します。
QueryServiceを呼び出すと、サービス識別子 (guidService) とインターフェイス ID (riid両方) を渡します。 guidService には、アクセスすると、riid は、サービスの一部であるインターフェイスを識別しますサービスを指定します。 代わりに、インターフェイスには、間接ポインターを受け取ります。
インターフェイスを実装する場合、他のサービスの一部であるインターフェイスを実装する可能性があるオブジェクト。 次の点を考慮する:
これらのインターフェイスの一部は省略可能である場合があります。 サービスの記述で定義されたすべてのインターフェイスは必ずしもサービスの実装または、返されたオブジェクトにありません。
QueryInterfaceの呼び出しとは異なり、別のサービス識別子を渡すことは、コンポーネント オブジェクト モデルの (COM) の別のオブジェクトが返されることを意味しません。
返されたオブジェクトは、サービスの定義の一部ではない追加のインターフェイスがある場合があります。
COM+ 2 サービスは、SID_SMyService と SID_SYourService など、インターフェイスの実装は、COM+ 2 サービス間の一般的な何もない場合でも、同じインターフェイスの使用を指定できます。 これは QueryService (SID_SMyService、IID_IDispatch) の呼び出しが QueryService (SID_SYourService、IID_IDispatch) とは異なるオブジェクトを返すことができるため、動作します。 オブジェクト ID は別のサービス識別子を指定すると想定していません。
必要条件
ヘッダー: atlcom.h