CoAddRefServerProcess 함수(combaseapi.h)
프로세스별 전역 참조 수를 증분합니다.
구문
ULONG CoAddRefServerProcess();
반환 값
현재 참조 수입니다.
설명
서버 는 CoAddRefServerProcess 를 호출하여 프로세스별 전역 참조 수를 증분할 수 있습니다. 이 함수는 다중 아파트 또는 자유 스레드 중 여러 스레드로 구현되는 서버에 특히 유용합니다. 이러한 유형의 서버는 여러 스레드에서 활성화 요청으로 종료 결정을 조정해야 합니다. CoAddRefServerProcess를 호출하면 전역 프로세스별 참조 수가 증가하며 CoReleaseServerProcess를 호출하면 개수가 감소합니다.
이 수가 0에 도달하면 OLE는 자동으로 CoSuspendClassObjects를 호출하여 새 활성화 요청이 들어오지 않도록 합니다. 이렇게 하면 서버가 다른 활성화 요청이 들어올 수 있다는 걱정 없이 다양한 스레드에서 클래스 개체의 등록을 취소할 수 있습니다. 새 활성화 요청으로 인해 로컬 서버 프로세스의 새 instance 시작됩니다.
로컬 서버 애플리케이션에서 이러한 함수를 사용하는 가장 간단한 방법은 각 instance 개체에 대해 생성자에서 CoAddRefServerProcess를 호출하고 fLock 매개 변수가 TRUE인 경우 각 IClassFactory::LockServer 메서드에서 CoAddRefServerProcess를 호출하는 것입니다. 또한 서버 애플리케이션은 각 instance 개체의 소멸과 fLock 매개 변수가 FALSE인 경우 각 LockServer 메서드에서 CoReleaseServerProcess를 호출해야 합니다. 마지막으로, 서버 애플리케이션은 CoReleaseServerProcess 의 반환 코드에 주의를 기울여야 하며, 0을 반환하는 경우 서버 애플리케이션은 정리를 시작해야 합니다. 즉, 여러 스레드가 있는 서버의 경우 일반적으로 다양한 스레드가 메시지 루프를 종료하고 CoRevokeClassObject 및 CoUninitialize를 호출하도록 신호를 보내야 합니다.
이러한 함수를 전혀 사용하는 경우 개체 인스턴스와 LockServer 메서드 모두에서 호출해야 합니다. 그렇지 않으면 서버 애플리케이션이 조기에 종료될 수 있습니다. 일반적으로 In-process 서버는 CoAddRefServerProcess 또는 CoReleaseServerProcess를 호출해서는 안 됩니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | combaseapi.h(Objbase.h 포함) |
라이브러리 | Ole32.lib |
DLL | Ole32.dll |