[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ] [ DOC Home ]

C クックブックの例:
OpenVMSでのサンプル・アプリケーションの作成


注意
SAMPLE1DISPATCH_SAMPLE1 は,Microsoft Pressが出版しているDale Rogerson 著『Inside COM』から抜粋したものです。

C.1 COMの例(サンプル1)

このサンプルでは,COMクライアントとサーバを実装します。コンポーネントは IXIY という2つのインタフェースを提供します。 また,クライアントはコンポーネントに対して3番目のインタフェース IZ を問い合わせていますが,これはコンポーネントが提供していないインタフェースです。

このサンプルでは,2つのOpenVMSシステム間の接続,2つのWindows NTシステム間の接続,OpenVMS システムとWindows NTシステムの間の接続を示しています。


注意
OpenVMSでアプリケーションを作成する前に,NTA$LOGON を実行し,Windows NT資格情報を取得する必要があります。詳細については,第12.2節を参照してください。

C.1.1 OpenVMSでの手順

ここでは,OpenVMSシステムでアプリケーションを構築する方法について説明します。

C.1.1.1 OpenVMSでのアプリケーションの構築

ファイルをDCOM examplesディレクトリからローカル・ディレクトリにコピーします。 次の例を参照してください。

        $ set default mydisk:[mydirectory]
        $ copy dcom$examples:[sample1]*.* []

アプリケーションを構築するには,次のコマンド・プロシージャを実行します。

        $ @build_sample1

MMSがある場合は,次に示すように,インクルードされた説明ファイルを使用できます。

        $  MMS/DESCRIPTION=BUILD_SAMPLE1.MMS

BUILD ファイルは,プロセス内サーバとプロセス外サーバの両方を構築し, 登録します。

C.1.1.2 OpenVMSでのアプリケーションの登録

ビルド・プロシージャは,CMPNT$SHR.EXECMPNT.EXE の両方を自動的に登録します。コンポーネントを手動で登録するには, 次の操作を行います。

C.1.1.3 プロセス外サーバとしてのOpenVMS でのアプリケーションの実行

コンポーネントがプロセス外サーバであるサンプルを実行するには, CMPNT.EXE を実行します。コンポーネントから Server: Waiting というメッセージが表示されたら,クライアントを別のウィンドウまたは端末セッションで実行します。

クライアントは次のメッセージを表示します。

       To which server do you want to connect?
        1) In-Process Server
        2) Out-of-Process Server
        :

2 と入力して,プロセス外サーバを選択します。

C.1.1.4 OpenVMSでのアプリケーションの実行とリモート・ サーバの指定

リモート・マシン(またはサーバ・システム)として指定したシステムで CMPNT.EXE を実行します。リモート・システムはWindows NTシステムでもかまいません。コンポーネントからServer: Waiting メッセージが返された場合は,ローカル・マシン(またはクライアント・ システム)として指定したシステムでクライアントを実行します。 次の例を参照してください。

        $ client :== $path-nameCLIENT.EXE
        $ client remote-system-name
        2
        $

クライアントは次のメッセージを表示します。

       To which server do you want to connect?
        1) In-Process Server
        2) Out-of-Process Server
        :

2 と入力して,リモート・サーバ,つまりプロセス外サーバの実行を選択します。

C.1.1.5 プロセス内サーバとしてのOpenVMS でのアプリケーションの実行

コンポーネントがプロセス内サーバであるサンプルを実行するには,クライアントだけを実行します。 次の例を参照してください。

        For InProc:
        $ client
        1
        $

クライアントは次のメッセージを表示します。

       To which server do you want to connect?
        1) In-Process Server
        2) Out-of-Process Server
        :

1 と入力して,プロセス内サーバを選択します。

C.1.2 Windows NTの場合の手順

ここでは,Windows NTシステムでアプリケーションを構築する方法について説明します。

C.1.2.1 Windows NTでのアプリケーションの構築

README-SAMPLE1.TXT ファイルと次のファイルをCOM examplesディレクトリからWindows NTシステムにコピーします。

     CLIENT.CXX
     CMPNT.CXX
     CMPNT.DEF
     GUIDS.CXX
     MAKE-ONE.
     MAKEFILE.BAT
     PROXY.DEF
     REGISTRY.CXX
     REGISTRY.H
     SERVER.IDL

MAKEFILE.BAT ファイルを使用して,サンプルを構築します。 次の例を参照してください。

        > MAKEFILE

Makefileはプロセス内サーバとプロセス外サーバの両方を構築し,登録します。

C.1.2.2 Windows NTでのアプリケーションの登録

ビルド・プロシージャmake-oneCMPNT.DLLPROXY.DLLCMPNT.EXE を自動的に登録します。次の例を参照してください。

        regsvr32 -s Cmpnt.dll
        regsvr32 -s Proxy.dll
        Cmpnt /RegServer

アプリケーションの登録を解除するには,次のコマンドを入力します。

        regsvr32 -u Cmpnt.dll
        regsvr32 -u Proxy.dll
        Cmpnt /UnRegServer

C.1.2.3 Windows NTでのアプリケーションの実行

CLIENT を実行します。OpenVMSでイン・プロセス・ サーバとしてアプリケーションを実行する手順(第C.1.1.5項), およびプロセス外サーバとしてアプリケーションを実行する手順( 第C.1.1.3項)と同じ手順を実行します。

リモート・マシンの名前(UNCまたはDNS)を引数として使用して,リモート・ マシンでオブジェクトのインスタンスを作成します。次の例を参照してください。

        >Client hostname        ! point the client at the remote system
        2                       ! means outproc invocation
        >

C.2 オートメーションの例(Dispatch_Sample1)

この例では,デュアル・インタフェースとしてオートメーション・コンポーネント・ サーバを実装します。この例には,ディスク・インタフェースを介してデュアル・ インタフェースに接続するDclient と,IUnknown インタフェース(v-tableを使用)を介して接続するCOM クライアント実装であるClient の2つのクライアントがあります。

このサンプルでは,2つのOpenVMSシステムの間の接続,2つのWindows NT システムの間の接続,OpenVMSシステムとWindows NTシステムの間の接続を示します。

C.2.1 OpenVMSの場合の手順

ここでは,OpenVMSシステムでアプリケーションを構築する方法について説明します。

C.2.1.1 OpenVMSでのアプリケーションの構築

ファイルをDCOM examplesディレクトリからローカル・ディレクトリにコピーします。 次の例を参照してください。

        $ set default mydisk:[mydirectory]
        $ copy dcom$examples:[dispatch_sample1]*.* []

アプリケーションを構築するには,次のコマンド・プロシージャを実行します。

        $ @build_dispatch_sample1

MMSがある場合は,次の例に示すように,インクルードされた説明ファイルを使用できます。

        $  MMS/DESCRIPTION=BUILD_DISPATCH_SAMPLE1.MMS

BUILD ファイルはプロセス内サーバとプロセス外サーバの両方を構築し, 登録します。

C.2.1.2 OpenVMSでのアプリケーションの登録

ビルド・プロシージャはCMPNT$SHR.EXECMPNT.EXE の両方を自動的に登録します。コンポーネントを手動で登録するには, 次の操作を行います。

C.2.1.3 プロセス外サーバとしてのOpenVMS でのアプリケーションの実行

コンポーネントがプロセス外サーバであるサンプルを実行するには, CMPNT.EXE を実行します。

コンポーネントからServer: Waiting メッセージが表示されたら, 別のウィンドウまたは端末セッションでクライアントを実行します。

クライアントは次のメッセージを表示します。

       To which server do you want to connect?
        1) In-Process Server
        2) Out-of-Process Server
        :

2 と入力して,プロセス外サーバを選択します。

C.2.1.4 OpenVMSでのアプリケーションの実行とリモート・ サーバの指定

リモート・マシン(またはサーバ・システム)として指定したシステムで CMPNT.EXE を実行します。リモート・システムはWindows NTシステムでもかまいません。Server: Waiting メッセージがコンポーネントから表示されたら, ローカル・マシン(またはクライアント・ システム)として指定したシステムでクライアントを実行します。 次の例を参照してください。

COMクライアントを使用するには,次のように入力します。

        $ client :== $path-nameCLIENT.EXE
        $ client remote-system-name
       To which server do you want to connect?
        1) In-Process Server
        2) Out-of-Process Server
        :

2 と入力して,リモート・サーバ実行,つまりサーバ外プロセスを選択します。

C.2.1.5 プロセス内サーバとしてのOpenVMS でのアプリケーションの実行

コンポーネントがプロセス内サーバであるサンプルを実行するには,クライアントだけを実行します。 次の例を参照してください。

クライアントは次のメッセージを表示します。

       To which server do you want to connect?
        1) In-Process Server
        2) Out-of-Process Server
        :

1 と入力して,プロセス内サーバを選択します。

C.2.2 Windows NTの場合の手順

ここでは,Windows NTシステムでアプリケーションを構築する方法について説明します。

C.2.2.1 Windows NTでのアプリケーションの構築

README-DISPATCH-SAMPLE1.TXT ファイルと次のファイルをCOM examples ディレクトリからWindows NTシステムにコピーします。

     CLIENT.CXX
     DCLIENT.CXX
     CMPNT.CXX
     CMPNT.DEF
     MAKE-ONE.
     MAKEFILE.BAT
     REGISTRY.CXX
     REGISTRY.H
     SERVER.IDL

MAKEFILE.BAT ファイルを使用してサンプルを構築します。 次の例を参照してください。

        C:> MAKEFILE

Makefileはプロセス内サーバとプロセス外サーバの両方を構築し,登録します。

C.2.2.2 Windows NTでのアプリケーションの登録

ビルド・プロシージャmake-oneCMPNT.DLLPROXY.DLLCMPNT.EXE を自動的に登録します。次の例を参照してください。

        regsvr32 -s Cmpnt.dll
        Cmpnt /RegServer

アプリケーションの登録を解除するには,次のコマンドを入力します。

        regsvr32 -u Cmpnt.dll
        Cmpnt /UnRegServer

C.2.2.3 Windows NTでのアプリケーションの実行

DCLIENT またはCLIENT を実行します。 OpenVMSでプロセス内サーバとしてアプリケーションを実行する手順(第C.2.1.5項), およびプロセス外サーバとして実行する手順( 第C.2.1.3 項)と同じ手順を実行します。

リモート・マシンの名前(UNCまたはDNS)を引数として使用して,リモート・ マシンでオブジェクトのインスタンスを作成します。


[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ] [ DOC Home ]