REGCLS 열거형(combaseapi.h)

클래스 개체에 대한 연결 유형을 제어합니다.

Syntax

typedef enum tagREGCLS {
  REGCLS_SINGLEUSE = 0,
  REGCLS_MULTIPLEUSE = 1,
  REGCLS_MULTI_SEPARATE = 2,
  REGCLS_SUSPENDED = 4,
  REGCLS_SURROGATE = 8,
  REGCLS_AGILE = 0x10
} REGCLS;

상수

 
REGCLS_SINGLEUSE
값: 0
애플리케이션이 CoGetClassObject를 사용하여 클래스 개체에 연결되면 다른 애플리케이션이 연결할 수 없도록 클래스 개체가 공용 보기에서 제거됩니다. 이 값은 일반적으로 SDI(단일 문서 인터페이스) 애플리케이션에 사용됩니다. 이 값을 지정해도 CoRevokeClassObject를 호출하는 개체 애플리케이션의 책임에는 영향을 주지 않습니다. 개체 클래스로 완료되면 항상 CoRevokeClassObject 를 호출해야 합니다.
REGCLS_MULTIPLEUSE
값: 1
여러 애플리케이션은 CoGetClassObject 호출을 통해 클래스 개체에 연결할 수 있습니다. coRegisterClassObject 호출에서 REGCLS_MULTIPLEUSE 및 CLSCTX_LOCAL_SERVER 모두 설정된 경우 클래스 개체는 CLSCTX_INPROC_SERVER 명시적으로 설정되었는지 여부에 관계없이 자동으로 in-process 서버로 등록됩니다.
REGCLS_MULTI_SEPARATE
값: 2
CoGetClassObject 호출을 통해 별도의 CLSCTX_LOCAL_SERVER 및 CLSCTX_INPROC_SERVER 클래스 팩터리를 등록하는 데 유용합니다. REGCLS_MULTI_SEPARATE 설정되면 각 실행 컨텍스트를 별도로 설정해야 합니다. CoRegisterClassObject 는 out-of-process 서버(CLSCTX_LOCAL_SERVER 설정됨)를 in-process 서버로 자동으로 등록하지 않습니다. 이를 통해 EXE는 CLSCTX_LOCAL_SERVER 등록을 방해하지 않고 자체 포함과 같은 프로세스 내 요구 사항에 대한 개체의 여러 인스턴스를 만들 수 있습니다. EXE가 REGCLS_MULTI_SEPARATE 클래스 팩터리와 CLSCTX_INPROC_SERVER 클래스 팩터리를 등록하는 경우 EXE에서 실행되는 CLSCTX 매개 변수에서 CLSCTX_INPROC_SERVER 지정하는 instance 생성 호출은 SCM에 접근하지 않고 로컬로 충족됩니다. 이 메커니즘은 EXE가 OleCreateOleLoad와 같은 함수를 사용하여 포함을 만들 때 유용하지만, 자체 포함 사례에 대해 자체의 새 instance 시작하지 않으려는 경우에도 유용합니다. 기본 처리기는 기본적으로 프록시 관리자를 집계하고 애플리케이션은 자체 포함 사례에 대해 OleCreateEmbeddingHelper 를 호출하여 이 기본 동작을 재정의해야 하므로 포함에 대한 구분이 중요합니다.

애플리케이션이 로컬 사례와 inproc 사례를 구분할 필요가 없는 경우 REGCLS_MULTI_SEPARATE 사용하여 클래스 팩터리를 등록할 필요가 없습니다. 실제로 애플리케이션은 MULTIPLEUSE 클래스 팩터리를 MULTI_SEPARATE 등록하고 다른 클래스 팩터리를 INPROC_SERVER 등록하지 않을 때 SCM에 대한 추가 네트워크 왕복을 발생합니다.
REGCLS_SUSPENDED
값: 4
CoResumeClassObjects에 대한 호출이 있을 때까지 지정된 CLSID에 대한 등록 및 활성화 요청을 일시 중단합니다. 이는 일반적으로 서버에 등록된 CLSID 수에 관계없이 SCM을 한 번 호출하여 전체 등록 시간을 줄이기 위해 여러 클래스 개체를 등록할 수 있는 서버의 CLSID를 등록하는 데 사용됩니다.

참고 이 플래그는 애플리케이션 종료와 COM 클래스 등록을 시도하는 애플리케이션 간의 가능한 경합 조건에서 COM 활성화 오류를 방지합니다.

 
REGCLS_SURROGATE
값: 8
클래스 개체가 DLL 서버를 실행하는 데 사용되는 서로게이트 프로세스입니다. 서로게이트 프로세스에 의해 등록된 클래스 팩터리는 DLL 서버에서 구현하는 실제 클래스 팩터리가 아니라 서로게이트에 의해 구현된 제네릭 클래스 팩터리입니다. 이 제네릭 클래스 팩터리는 instance 생성 및 마샬링을 서로게이트에서 실행되는 DLL 서버의 클래스 팩터리로 위임합니다. DLL 서로게이트에 대한 자세한 내용은 DllSurrogate 레지스트리 값을 참조하세요.
REGCLS_AGILE
값: 0x10
클래스 개체는 자유 스레드 마샬러를 집계합니다.
및 는 모든 inproc 아파트에 표시됩니다. 다른 플래그와 함께 사용할 수 있습니다. 예를 들어 REGCLS_AGILE
등록할 REGCLS_MULTIPLEUSE
에서 여러 번 사용할 수 있는 클래스 개체
다른 아파트. 다른 플래그가 없으면 동작
에서만 REGCLS_SINGLEUSE 의미 체계를 유지합니다.
하나의 instance 생성할 수 있습니다.

설명

CoRegisterClassObject에서 REGCLSCLSCTX 열거형의 멤버가 함께 수행되어 클래스 개체가 등록되는 방법을 결정합니다.

EXE 서로게이트(DLL 서버가 실행됨)는 CoRegisterClassObject 를 호출하여 새 REGCLS 값인 REGCLS_SURROGATE 사용하여 클래스 팩터리를 등록합니다.

DLL 서로게이트에 대한 모든 클래스 팩터리를 REGCLS_SURROGATE 집합에 등록해야 합니다. DLL 서버에 서로게이트를 등록할 때 REGCLS_SINGLUSE 또는 REGCLS_MULTIPLEUSE 설정하지 마세요.

다음 표에는 허용되는 REGCLS 값 조합과 조합의 영향을 받는 개체 등록이 요약되어 있습니다.

REGCLS_SINGLEUSE REGCLS_MULTIPLEUSE REGCLS_MULTI_SEPARATE 기타
CLSCTX_INPROC_SERVER 오류 In-Process In-Process 오류
CLSCTX_LOCAL_SERVER 로컬 In-process/local 로컬 오류
위 항목 모두 해당 오류 In-process/local In-process/local 오류
기타 오류 Error Error Error

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
머리글 combaseapi.h(Objbase.h 포함)

추가 정보

CoGetClassObject

CoRegisterClassObject

DllGetClassObject

DllSurrogate