다음을 통해 공유


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
S_OK
개체가 성공적으로 검색되었습니다.
CLASS_E_CLASSNOTAVAILABLE
DLL은 클래스(개체 정의)를 지원하지 않습니다.

설명

CoGetClassObject 함수를 호출하면 DLL에 로드할 클래스 개체가 발견되면 CoGetClassObject는 DLL의 내보낸 DllGetClassObject 함수를 사용합니다.

발신자에게 참고 사항

DllGetClassObject를 직접 호출하면 안 됩니다. 개체가 DLL에 정의되면 CoGetClassObjectCoLoadLibrary 함수를 호출하여 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 포함)

추가 정보

CoGetClassObject

DllCanUnloadNow