IServiceProviderImpl::QueryService
또는 지정 된 서비스에 액세스 하 고 서비스에 대해 지정 된 인터페이스에 인터페이스 포인터를 반환 합니다.
STDMETHOD(QueryService)(
REFGUID guidService,
REFIID riid,
void** ppvObject
);
매개 변수
[IN]guidService
서비스 식별자 (SID)에 대 한 포인터입니다.[IN]riid
호출자가 액세스할 수 있는 인터페이스의 식별자입니다.[OUT]ppvObj
요청 된 인터페이스에 대 한 간접 포인터입니다.
반환 값
반환 되는 HRESULT 값은 다음 중 하나입니다.
반환 값 |
의미 |
---|---|
S_OK |
서비스가 성공적으로 생성 또는 검색 되었습니다. |
E_INVALIDARG |
하나 이상의 인수가 잘못된 경우 |
E_OUTOFMEMORY |
서비스를 만들 수 있는 충분 한 메모리가 없습니다. |
E_UNEXPECTED |
알 수 없는 오류가 발생했습니다. |
E_NOINTERFACE |
요청 된 인터페이스를 사용할 수 없습니다.이 서비스의 일부 또는 서비스에 알 수 없습니다. |
설명
QueryService요청 된 인터페이스에 지정 된 서비스는 간접 포인터를 반환합니다.호출자가 더 이상 필요 하지 않으면이 포인터 해제를 담당 합니다.
호출 하면 QueryService, 서비스 id 전달 (guidService)와 인터페이스 식별자 (riid).guidService 액세스에 사용할 서비스를 지정 및 riid 서비스의 인터페이스를 식별 합니다.대신, 인터페이스에 대 한 간접 포인터를 받습니다.
또한 인터페이스를 구현 하는 개체의 다른 서비스에 포함 된 인터페이스를 구현할 수 있습니다.다음을 고려하십시오.
이러한 인터페이스 중 일부는 선택적 수 있습니다.서비스 설명에 정의 된 모든 인터페이스 반드시 반환 된 모든 개체 또는 모든 서비스의 구현에 있습니다.
호출을 달리 QueryInterface, 다른 서비스 식별자를 전달 하지 않습니다 반드시 의미 다른 구성 요소 개체 모델 (COM) 개체 반환 됩니다.
반환 된 개체는 서비스의 정의 포함 되지 않은 추가 인터페이스에 있을 수 있습니다.
SID_SYourService, SID_SMyService 등 두 개의 서로 다른 서비스 구현 인터페이스의 공통 서비스 사이 아무 것도 있을 수 있습니다 경우에 모두 동일한 인터페이스를 사용 하는 지정할 수 있습니다.때문에 작동 호출을 QueryService (SID_SMyService, IID_IDispatch)는 다른 개체를 반환할 수 있습니다 QueryService (SID_SYourService, IID_IDispatch).다른 서비스 식별자를 지정 하면 개체 id 아닐 수도 있습니다.
요구 사항
헤더: atlcom.h