다음을 통해 공유


INPROC 샘플: In-Process 자동화 서버 응용 프로그램

업데이트: 2007년 11월

INPROC 샘플은 in-process 자동화(이전의 OLE 자동화) 서버입니다. 다른 MFC 자동화 서버 샘플과 달리 INPROC는 클라이언트의 주소 공간에서 DLL(동적 연결 라이브러리)로 로드될 수 있습니다. RPC(원격 프로시저 호출)는 In-process 서버에 의해 구현되는 개체에 대해 메서드를 호출할 필요가 없으므로 별도의 EXE로 구현되는 서버보다 In-process 서버가 일반적으로 더 효과적입니다.

참고:

이 샘플을 비롯한 일부 샘플은 Visual C++ 마법사, 라이브러리 및 컴파일러의 변경 내용을 반영하도록 수정되지 않았지만 해당 작업의 수행 방법을 보여 줍니다.

보안 정보:

이 샘플 코드는 개념을 보여 주기 위해 제공되며 가장 안전한 코드 작성 방법을 제시하지 않을 수 있으므로 응용 프로그램이나 웹 사이트에서 사용할 수 없습니다. Microsoft는 샘플 코드를 원래 용도 이외의 다른 용도로 사용하는 경우 발생하는 부수적이나 파생적인 손해에 대해 책임을 지지 않습니다.

샘플 및 이를 설치하기 위한 지침을 가져오려면

  • Visual Studio의 도움말 메뉴에서 샘플을 클릭합니다.

    자세한 내용은 샘플 파일 찾기를 참조하십시오.

  • 최신 버전 및 전체 샘플 목록은 Visual Studio 2008 Samples 페이지에서 온라인으로 사용할 수 있습니다.

  • 컴퓨터의 하드 디스크에서도 샘플을 찾을 수 있습니다. 기본적으로 샘플과 추가 정보 파일은 \Program Files\Visual Studio 9.0\Samples\ 아래의 폴더에 복사됩니다. Visual Studio Express Edition의 경우에는 모든 샘플이 온라인에 있습니다.

샘플 빌드 및 실행

INPROC 샘플을 빌드하고 실행하려면

  1. inproc.sln 솔루션을 엽니다.

  2. 빌드 메뉴에서 빌드를 클릭합니다.

  3. 프로젝트의 .reg 파일, 즉 regedit INPROC.REG를 실행하거나 REGSVR 샘플의 REGSVR을 사용하여 INPROC의 DLL을 등록합니다.

    REGEDIT을 사용하는 경우에는 Inproc.dll이 시스템 경로에 있어야 합니다. 또는 Inproc.dll 경로를 명시적으로 가리키도록 .reg 파일을 수정할 수 있습니다.

    DLL은 EXE와는 달리 단독으로 실행할 수 없으므로 INPROC를 테스트하려면 클라이언트 응용 프로그램에서 INPROC를 "구동"해야 합니다. INPROC는 Visual Basic 또는 Visual C++에서 구동될 수 있습니다. Visual C++에서 INPROC를 구동하는 예제를 보려면 IPDRIVE 샘플을 참조하십시오.

    참고:

    INPROC의 EXE 버전 또는 DLL 버전을 빌드할 수 있습니다. 샘플의 프로젝트 설정에서 EXE 변형을 설정합니다. INPROC의 EXE 버전은 Windows 레지스트리에 자신만 등록합니다.

INPROC 클래스

CVariantMap 클래스는 VARIANT 맵에 VARIANT를 구현합니다. 이렇게 되면 한 VARIANT를 다른 VARIANT에 매핑할 수 있습니다. CMap을 직접 사용하는 Visual C++ 프로그래머들에게는 유용하지 않겠지만 이로 인해 Visual Basic 사용자들은 MFC의 컬렉션 클래스 기능을 이용할 수 있습니다. mfc.inproc.varmap 이름을 사용하여 CVariantMap 클래스에 액세스합니다. 이것은 Windows 레지스트리에서 개체를 등록하는 방법입니다. CVariantMap_NewEnum 메서드뿐만 아니라 표준 컬렉션 메서드와 속성을 구현합니다.

CStringCollect 클래스는 문자열 배열을 구현합니다. CStringCollectCVariantMap과 동일한 여러 가지 자동화 기능을 구현하지만 CStringCollect 구현이 CVariantMap 클래스보다 간단합니다. mfc.inproc.strcoll 이름을 사용하여 CstringCollect 개체에 액세스합니다. CStringCollect는 대부분의 표준 컬렉션 메서드와 속성을 구현하며 자체 컬렉션을 구현하는 방법을 보여주는 좋은 예제이기도 합니다. _NewEnum 메서드를 구현하여 컬렉션의 콘텐츠를 열거할 때 Visual Basic 사용자가 For Each... In 구문을 사용할 수 있도록 합니다. CStringCollectCEnumVariant를 사용하여 이 기능을 구현하며 MFC 인터페이스 맵을 사용하여 IEnumVARIANT를 구현합니다. 사용자의 응용 프로그램에서 CEnumVariant가 유용함을 확인할 수 있습니다.

마지막으로 이 샘플에서는 in-process 서버와 LocalServer 서버의 성능을 비교하는 데 사용되는 몇 가지 더미 속성을 구현합니다. 더미 속성은 IPDRIVE의 Test1 및 Test2 단추로 테스트한 속성입니다.

키워드

이 샘플에서는 다음의 키워드를 보여 줍니다.

AfxIsValidAddress; AfxMessageBox; AfxOleInit; AfxOleLockApp; AfxOleUnlockApp; AfxThrowMemoryException; AfxThrowOleException; CCmdTarget::EnableAutomation; CCmdTarget::GetIDispatch; CCmdTarget::OnFinalRelease; CString::AllocSysString; CWinApp::InitInstance; CWinApp::RunAutomated; CWinApp::RunEmbedded; DllCanUnloadNow; DllGetClassObject; min

참고 항목

기타 리소스

MFC 샘플