IPDRIVE サンプル:オートメーション クライアント アプリケーションを示します

IPDRIVE サンプルは、INPROC サンプル アプリケーションを呼び出す、単純なオートメーション (以前の OLE オートメーション) クライアント アプリケーションです。 このサンプルは、オートメーション インプロセス サーバーである INPROC に用意されている機能をテストします。 IPDRIVE は、インプロセスの INPROC だけでなく、アウトプロセスやローカル サーバーの INPROC も呼び出すことができ、インプロセス コンポーネントのパフォーマンスの利点を示します。 詳細については、「INPROC サンプル : インプロセス オートメーション サーバー アプリケーションの例」を参照してください。

注意

IPDRIVE を実行する前に、INPROC サンプル アプリケーションを実行して INPROC 自体をレジストリに登録する必要があります。

セキュリティに関するメモセキュリティに関するメモ

このサンプル コードは概念を示すためのものであり、その概念に関連するコードのみを示しています。特定の環境について必ずしもセキュリティ要件を満たしていませんので、そのまま使用しないでください。セキュリティおよびエラー処理コードを追加して、プロジェクトをより安全かつ堅牢にすることをお勧めします。これらのサンプル コードは、現状有姿のままで提供されるものであり、一切保証されていません。

サンプルとそのインストール手順を取得するには

Visual Studio のサンプルにアクセスするには

  • [ヘルプ] メニューの [サンプル] をクリックします。

    既定では、これらのサンプルは drive:\Program Files\Microsoft Visual Studio 10.0\Samples\ にインストールされています。

  • このサンプルの最新版および他のサンプルの一覧については、MSDN Web サイト上で Visual Studio サンプル 」を参照してください。

サンプルのビルドと実行

IPDRIVE サンプルをビルドおよび実行するには

  1. 手順に従って、INPROC サンプルの実行、ビルド、および登録を行います。

  2. ソリューション ファイル ipdrive.sln を開きます。

  3. [ビルド] メニューの [ビルド] をクリックします。

  4. システムに登録するために、IPDRIVE をスタンドアロン アプリケーションとして実行します。

    IPDRIVE を実行すると、INPROC サンプルが読み込まれ、IPDRIVE のインターフェイスを使用して操作できるバリアント マップ オブジェクトが作成されます。

バリアント マップ オブジェクトは MFC CMap コレクションによく似ています。 このオブジェクトは、任意の値を別の任意の値に変換するために使用します。 それぞれの値型と値で構成され、VARIANT、です。 IPDRIVE ユーザー インターフェイスを使用すると、型と値の両方にアクセスできます。 変換できる型と値の組み合わせは任意です。

IPDRIVE も 2 つのボタン、Test1 の および INPROC サーバー アプリケーションのパフォーマンスをテストするために使用できる Test2、用意されています。 ほとんどの部分では、これらの関数はオートメーションの関数呼び出しのオーバーヘッドをテストします。 関数呼び出しのオーバーヘッドは、インプロセスの INPROC よりもローカル サーバーの INPROC の方が大きくなると予想されます。 ローカル サーバーは、独自のアドレス空間で個別の実行可能ファイルとして実行します。 このため、オブジェクトのメソッドやプロパティにアクセスするためにリモート プロシージャ コール (RPC) が必要です。 ただし、インプロセス サーバーはクライアントのアドレス空間に DLL として読み込まれるため、RPC は不要です。 [Test1] ボタンと [Test2] ボタンは両方ともちょうど 5 秒間実行し、呼び出し回数を表示します。 呼び出し回数が多いほど、パフォーマンスが優れています。

INPROC には、さらに単純なコレクション (文字列配列) も含まれています。これは IPDRIVE では実行されません。

Keywords

このサンプルでは、次のキーワードを使用します。

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++ のウィザード、ライブラリ、およびコンパイラの変更が反映されていませんが、必要なタスクを実行する方法は示されています。

参照

その他の技術情報

MFC サンプル