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을 반환하는 경우 서버 애플리케이션은 정리를 시작해야 합니다. 즉, 여러 스레드가 있는 서버의 경우 일반적으로 다양한 스레드가 메시지 루프를 종료하고 CoRevokeClassObjectCoUninitialize를 호출하도록 신호를 보내야 합니다.

이러한 함수를 전혀 사용하는 경우 개체 인스턴스와 LockServer 메서드 모두에서 호출해야 합니다. 그렇지 않으면 서버 애플리케이션이 조기에 종료될 수 있습니다. 일반적으로 In-process 서버는 CoAddRefServerProcess 또는 CoReleaseServerProcess를 호출해서는 안 됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 combaseapi.h(Objbase.h 포함)
라이브러리 Ole32.lib
DLL Ole32.dll

추가 정보

CoReleaseServerProcess

IClassFactory::LockServer

Out-of-Process 서버 구현 도우미