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