DllGetClassObject 함수(combaseapi.h)
DLL 개체 처리기 또는 개체 애플리케이션에서 클래스 개체를 검색합니다.
OLE는 이 함수를 제공하지 않습니다. OLE COM(구성 요소 개체 모델)을 지원하는 DLL은 OLE 개체 처리기 또는 DLL 애플리케이션에서 DllGetClassObject 를 구현해야 합니다.
구문
HRESULT DllGetClassObject(
[in] REFCLSID rclsid,
[in] REFIID riid,
[out] LPVOID *ppv
);
매개 변수
[in] rclsid
올바른 데이터와 코드를 연결할 CLSID입니다.
[in] riid
호출자가 클래스 개체와 통신하는 데 사용할 인터페이스의 식별자에 대한 참조입니다. 일반적으로 이는 IID_IClassFactory(OLE 헤더에 IClassFactory의 인터페이스 식별자로 정의됨).
[out] ppv
riid에서 요청된 인터페이스 포인터를 수신하는 포인터 변수의 주소입니다. 반환이 성공하면 *ppv 에 요청된 인터페이스 포인터가 포함됩니다. 오류가 발생하면 인터페이스 포인터가 NULL입니다.
반환 값
이 함수는 다음 값뿐만 아니라 E_INVALIDARG, E_OUTOFMEMORY 및 E_UNEXPECTED 표준 반환 값을 반환할 수 있습니다.
반환 코드 | Description |
---|---|
|
개체가 성공적으로 검색되었습니다. |
|
DLL은 클래스(개체 정의)를 지원하지 않습니다. |
설명
CoGetClassObject 함수를 호출하면 DLL에 로드할 클래스 개체가 발견되면 CoGetClassObject는 DLL의 내보낸 DllGetClassObject 함수를 사용합니다.
발신자에게 참고 사항
DllGetClassObject를 직접 호출하면 안 됩니다. 개체가 DLL에 정의되면 CoGetClassObject 는 CoLoadLibrary 함수를 호출하여 DLL을 로드합니다. 이 함수는 DllGetClassObject를 호출합니다.구현자에 대한 참고 사항
COM을 지원하는 DLL에서 DllGetClassObject 를 구현하고 내보내야 합니다.예제
다음은 DllGetClassObject 구현의 예제입니다(C++). 이 예제에서 DllGetClassObject 는 클래스 개체를 만들고 QueryInterface 메서드를 호출하여 riid에서 요청된 인터페이스에 대한 포인터를 검색합니다. 구현은 IClassFactory 에 대한 참조 계산 포인터를 호출자에게 반환하기 때문에 IClassFactory 인터페이스에 대한 참조를 해제합니다.
HRESULT _export CALLBACK DllGetClassObject
(REFCLSID rclsid, REFIID riid, LPVOID * ppvObj)
{
HRESULT hr = E_OUTOFMEMORY;
*ppvObj = NULL;
CClassFactory *pClassFactory = new CClassFactory(rclsid);
if (pClassFactory != NULL) {
hr = pClassFactory->QueryInterface(riid, ppvObj);
pClassFactory->Release();
}
return hr;
}
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | combaseapi.h(Objbase.h 포함) |