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을 반환하면 서버 애플리케이션이 정리를 시작해야 합니다. 이는 일반적으로 스레드가 여러 개인 서버가 메시지 루프를 종료하고 CoRevokeClassObjectCoUninitialize를 호출하기 위해 다양한 스레드에 신호를 보내야 했음을 의미합니다.

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

요구 사항

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

추가 정보

CoAddRefServerProcess

CoSuspendClassObjects

IClassFactory::LockServer

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