CoRegisterClassObject 함수(combaseapi.h)
EXE 클래스 개체를 OLE에 등록하여 다른 애플리케이션이 연결할 수 있도록 합니다.
구문
HRESULT CoRegisterClassObject(
[in] REFCLSID rclsid,
[in] LPUNKNOWN pUnk,
[in] DWORD dwClsContext,
[in] DWORD flags,
[out] LPDWORD lpdwRegister
);
매개 변수
[in] rclsid
등록할 CLSID입니다.
[in] pUnk
가용성이 게시되는 클래스 개체의 IUnknown 인터페이스에 대한 포인터입니다.
[in] dwClsContext
실행 코드를 실행할 컨텍스트입니다. 이러한 컨텍스트 값에 대한 자세한 내용은 CLSCTX 열거형을 참조하세요.
[in] flags
클래스 개체에 대한 연결 방법을 나타냅니다. 이러한 플래그에 대한 자세한 내용은 REGCLS 열거형을 참조하세요.
[out] lpdwRegister
등록된 클래스 개체를 식별하는 값에 대한 포인터입니다. 나중에 CoRevokeClassObject 함수에서 등록을 취소하는 데 사용됩니다.
반환 값
이 함수는 다음 값뿐만 아니라 E_INVALIDARG, E_OUTOFMEMORY 및 E_UNEXPECTED 표준 반환 값을 반환할 수 있습니다.
반환 코드 | Description |
---|---|
|
클래스 개체가 성공적으로 등록되었습니다. |
설명
EXE 개체 애플리케이션은 시작할 때 CoRegisterClassObject 를 호출해야 합니다. EXE에서 사용하는 것과 동일한 EXE 또는 다른 코드(예: DLL)에서 사용할 내부 개체를 등록하는 데 사용할 수도 있습니다. EXE 개체 애플리케이션만 CoRegisterClassObject를 호출합니다. 개체 처리기 또는 DLL 개체 애플리케이션은 이 함수를 호출하지 않습니다. 대신 DllGetClassObject 함수를 구현하고 내보내야 합니다.
시작할 때 다중 사용 EXE 개체 애플리케이션은 클래스 개체( IClassFactory 인터페이스가 있는)를 만들고 CoRegisterClassObject 를 호출하여 클래스 개체를 등록해야 합니다. 여러 클래스(예: 여러 유형의 포함 가능 개체)를 지원하는 개체 애플리케이션은 각각에 대해 다른 클래스 개체를 할당하고 등록해야 합니다.
동일한 클래스 개체의 여러 등록은 독립적이며 오류를 생성하지 않습니다. 각 후속 등록은 lpdwRegister에서 고유한 키를 생성합니다.
MDI(여러 문서 인터페이스) 애플리케이션은 클래스 개체를 등록해야 합니다. SDI(단일 문서 인터페이스) 애플리케이션은 /Embedding 스위치를 통해 시작할 수 있는 경우에만 클래스 개체를 등록해야 합니다.
클래스 개체의 서버는 CoRevokeClassObject 를 호출하여 클래스 개체를 취소해야 합니다(등록 제거).
- 개체 정의의 기존 인스턴스가 없습니다.
- 클래스 개체에 잠금이 없습니다.
- 클래스 개체에 서비스를 제공하는 애플리케이션은 사용자가 제어할 수 없습니다(디스플레이의 사용자에게 표시되지 않음).
Windows Server 2003을 기준으로 COM 개체 애플리케이션이 서비스로 등록된 경우 COM은 등록을 확인합니다. COM은 SCM(서비스 제어 관리자)에서 서비스의 프로세스 ID가 등록 프로세스의 프로세스 ID와 일치하는지 확인합니다. 그렇지 않은 경우 COM은 등록에 실패합니다. COM 개체 애플리케이션이 레지스트리 키 없이 시스템 계정에서 실행되는 경우 COM은 개체 애플리케이션 ID를 사용자 시작으로 처리합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows 2000 Server [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | combaseapi.h(Objbase.h 포함) |
라이브러리 | Ole32.lib |
DLL | Ole32.dll |