IPDRIVE 샘플: 자동화 클라이언트 응용 프로그램 설명
업데이트: 2007년 11월
IPDRIVE 샘플은 INPROC 샘플 응용 프로그램을 구동하는 간단한 자동화(이전의 OLE 자동화) 클라이언트 응용 프로그램이며 INPROC, 자동화 in-process 서버에서 제공하는 기능을 테스트합니다. IPDRIVE는 INPROC의 in-process 버전과 out-of-process 또는 로컬 서버 버전을 둘 다 구동하여 in-process 구성 요소의 성능 이점을 보여 줍니다. 자세한 내용은 INPROC 샘플을 참조하십시오.
참고: |
---|
INPROC 샘플 응용 프로그램을 실행하여 레지스트리에 INPROC가 자체 등록되도록 한 다음에 IPDRIVE를 실행해야 합니다. |
보안 정보: |
---|
이 샘플 코드는 개념을 보여 주기 위해 제공되며 가장 안전한 코드 작성 방법을 제시하지 않을 수 있으므로 응용 프로그램이나 웹 사이트에서 사용할 수 없습니다. Microsoft는 샘플 코드를 원래 용도 이외의 다른 용도로 사용하는 경우 발생하는 부수적이나 파생적인 손해에 대해 책임을 지지 않습니다. |
샘플 및 이를 설치하기 위한 지침을 가져오려면
Visual Studio의 도움말 메뉴에서 샘플을 클릭합니다.
자세한 내용은 샘플 파일 찾기를 참조하십시오.
최신 버전 및 전체 샘플 목록은 Visual Studio 2008 Samples 페이지에서 온라인으로 사용할 수 있습니다.
컴퓨터의 하드 디스크에서도 샘플을 찾을 수 있습니다. 기본적으로 샘플과 추가 정보 파일은 \Program Files\Visual Studio 9.0\Samples\ 아래의 폴더에 복사됩니다. Visual Studio Express Edition의 경우에는 모든 샘플이 온라인에 있습니다.
샘플 빌드 및 실행
IPDRIVE 샘플을 빌드하고 실행하려면
지침에 따라 INPROC 샘플을 실행, 빌드 및 등록합니다.
ipdrive.sln 솔루션을 엽니다.
빌드 메뉴에서 빌드를 클릭합니다.
시스템에 IPDRIVE 자체를 등록할 수 있도록 IPDRIVE를 독립 실행형 응용 프로그램으로 실행합니다.
IPDRIVE를 실행하면 IPDRIVE는 INPROC 샘플을 로드하고 IPDRIVE의 인터페이스를 사용하여 조작할 수 있는 변형 맵 개체를 만듭니다.
변형 맵 개체는 MFC의 CMap 컬렉션과 매우 유사하며, 임의의 한 값을 다른 값으로 매핑하는 데 사용됩니다. 각 값은 형식과 값으로 구성되는 VARIANT입니다. IPDRIVE 사용자 인터페이스를 사용하여 형식과 값에 액세스할 수 있습니다. 임의의 형식/값 쌍을 다른 형식/값 쌍에 매핑할 수 있습니다.
또한 IPDRIVE는 Test1과 Test2라는 두 개의 단추도 제공하는데 이 단추는 INPROC 서버 응용 프로그램의 성능을 테스트하는 데 사용됩니다. 대부분의 경우 이러한 기능은 자동화의 함수 호출 오버헤드를 테스트합니다. 함수 호출 오버헤드는 INPROC의 in-process 버전을 사용하는 것보다 로컬 서버 버전을 사용하는 경우 더 커야 합니다. 로컬 서버는 고유의 주소 공간에서 별도의 실행 파일로 실행됩니다. 따라서 RPC(원격 프로시저 호출)에서 개체의 메서드와 속성에 액세스해야 합니다. 그러나 in-process 서버는 클라이언트의 주소 공간에 DLL로 로드되고 RPC를 필요로 하지 않습니다. Test1 및 Test2 단추는 정확히 5초 동안 실행된 다음 호출 수를 표시합니다. 호출 수가 많을 수록 성능이 좋습니다.
또한 INPROC는 IPDRIVE에 의해 실행되지 않는 더 간단한 컬렉션(문자열 배열)을 포함합니다.
키워드
이 샘플에서는 다음의 키워드를 보여 줍니다.
AfxMessageBox; AfxOleInit; AfxThrowUserException; CArchive::IsStoring; CComboBox::GetCurSel; CComboBox::SetCurSel; CControlBar::EnableDocking; CControlBar::GetBarStyle; CControlBar::SetBarStyle; CDialog::DoModal; CDocument::OnNewDocument; CFrameWnd::DockControlBar; CFrameWnd::EnableDocking; CObject::AssertValid; CObject::Dump; CObject::Serialize; COleDispatchDriver::GetProperty; COleDispatchDriver::InvokeHelper; COleDispatchDriver::SetProperty; CScrollView::ResizeParentToFit; CStatusBar::Create; CStatusBar::SetIndicators; CString::AllocSysString; CString::Format; CString::GetBuffer; CString::LoadString; CString::ReleaseBuffer; CToolBar::Create; CToolBar::LoadBitmap; CToolBar::SetButtons; CView::GetDocument; CView::OnInitialUpdate; CWinApp::AddDocTemplate; CWinApp::InitInstance; CWinApp::LoadStdProfileSettings; CWinApp::OnFileNew; CWnd::DoDataExchange; CWnd::GetDlgItem; CWnd::GetParentFrame; CWnd::GetWindowText; CWnd::OnCreate; CWnd::SetDlgItemText; CWnd::SetWindowText; DragAcceptFiles; GetKeyState; GetTickCount; max; wsprintf
참고: |
---|
이 샘플을 비롯한 일부 샘플은 Visual C++ 마법사, 라이브러리 및 컴파일러의 변경 내용을 반영하도록 수정되지 않았지만 해당 작업의 수행 방법을 보여 줍니다. |