다음을 통해 공유


DLL 서버 요구 사항

대부분의 DLL은 서로게이트에서 실행할 수 있지만 일부 DLL은 실행할 수 없습니다.

시스템에서 제공하는 서로게이트를 사용하려면 DLL이 잘 작동해야 합니다. 예를 들어 클라이언트에서 콜백을 등록하는 메서드를 호출하는 DLL은 받은 함수 포인터가 주소 공간의 지침에 대한 것처럼 해당 콜백을 호출하려고 시도합니다. 그렇지 않습니다. 마찬가지로 클라이언트가 액세스할 것으로 예상되는 전역 변수를 사용하는 DLL은 작동하지 않습니다. 일반적으로 제대로 마샬링할 수 없는 매개 변수는 DLL 서버가 클라이언트 프로세스 외부에서 실행되지 않도록 합니다. 대부분의 경우 "잘못된" 동작을 보정하도록 특별히 설계된 사용자 지정 서로게이트를 작성할 수 있습니다. (자세한 내용은 사용자 지정 서로게이트 작성을 참조하세요.)

DLL 서버에서 사용자 지정 인터페이스를 사용하는 경우 해당 인터페이스에 대해 마샬링 코드를 사용할 수 있는지 확인해야 합니다. 예를 들어 프록시 DLL을 빌드 및 등록하거나 서로게이트에서 실행하는 동안 서버가 올바르게 작동할 수 있도록 하는 형식 라이브러리를 제공하고 등록할 수 있습니다.

DLL 서버는 적절한 보안 컨텍스트에서 실행되는 서로게이트 프로세스에만 로드됩니다. DLL 서버 서로게이트에 대한 보안 컨텍스트는 EXE 서버와 동일한 방식으로 결정됩니다. DLL 서버 서로게이트는 보안 컨텍스트를 결정하는 RunAs 값이 서버의 AppID 레지스트리 섹션에서 설정되지 않는 한 클라이언트와 동일한 보안 컨텍스트에서 실행됩니다.

DLL 서로게이트