日本-日本語
日本HPホーム 製品 & サービス サポート & ドライバー ソリューション ご購入方法
≫  お問い合わせ

製品とサービス >  ソフトウェアとOS >  OpenVMS >  マニュアル

OpenVMS マニュアル


≫ 

OpenVMS
ライブラリ

タイトルページ
目次
まえがき
第 1 章:COM for OpenVMSに関するリリースノート
第 2 章:OpenVMS Registryに関するリリースノート
第 3 章:COM for OpenVMSの概要
第 4 章:COM for OpenVMSのインストール
第 5 章:アプリケーションの開発と運用のためのCOM for OpenVMSユーティリティ
第 6 章:COM for OpenVMSアプリケーションの開発
第 7 章:OpenVMS Registryの概要
第 8 章:OpenVMS Registryシステム管理
第 9 章:OpenVMS Registryサーバの管理
第 10 章:OpenVMS Registryシステムサービス
第 11 章:OpenVMS イベント
第 12 章:認証
付録 A :MIDLコンパイラのオプション
付録 B :トラブルシューティング
付録 C :サンプルアプリケーションの作成
付録 D :V1.0からV1.1へのアップグレード
付録 E :相違点,API,インタフェースの一覧
付録 F :インストールされるファイル一覧
用語集
略語集
索引
PDF
OpenVMS ホーム
OpenVMS Alpha オペレーティング・システム | HPE 日本

OpenVMS Alpha
オペレーティング・システム
コネクティビティ開発者ガイド


目次 索引




プロセス内コンポーネント共用可能イメージの依存関係の一覧は,クライアント・イメージやコンポーネント実行可能イメージとは少し異なります。リンク時に発生する特定の依存関係は次のとおりです。

  • DCOM$WIN32:WINDU.OPT

  • DCOM$LIBRARY:DCOM.OPT



プロセス内コンポーネント共用可能イメージをリンクするには,COM for OpenVMS が共用可能イメージ内で呼び出すエントリ・ポイントのシンボル・ベクタを作成しなければなりません。Win32 実行時環境では,DllMainエントリ・ポイントに対して標準命名規則が適用されます。次の要素を含まなければなりません。

  • _Windu_接頭辞

  • 実際のエントリ・ポイント名

  • イメージ名の形式に応じて,イメージ名またはイメージ名の一部を含む接尾辞。
    イメージ名が$SHRで終わる場合 (たとえば,CMPNT$SHR) の場合,接尾辞はドル記号 ($) も含むイメージ名です。
    イメージ名が$SHR以外で終了する場合 (たとえば,CMPNT_SHARE),接尾辞は完全なイメージ名です。

たとえば,CMPNT$SHRという名前のコンポーネント共用可能イメージは,次のオプション・ファイルを使用してシンボル・ベクタを定義します。


! 
! The list of symbols exported by CMPNT$SHR.EXE. 
! 
SYMBOL_VECTOR=(- 
        _WindU_DllMain_CMPNT$/DllMain  = PROCEDURE,- 
        DllGetClassObject               = PROCEDURE,- 
        DllCanUnloadNow                 = PROCEDURE,- 
        DllRegisterServer               = PROCEDURE,- 
        DllUnregisterServer             = PROCEDURE) 

CMPNT_SHAREという名前のコンポーネント共用可能イメージは,次のオプション・ファイルを使用してシンボル・ベクタを定義します。


! 
! The list of symbols exported by CMPNT_SHARE.EXE. 
! 
SYMBOL_VECTOR=(- 
        _WindU_DllMain_CMPNT_SHARE/DllMain  = PROCEDURE,- 
        DllGetClassObject               = PROCEDURE,- 
        DllCanUnloadNow                 = PROCEDURE,- 
        DllRegisterServer               = PROCEDURE,- 
        DllUnregisterServer             = PROCEDURE) 



6.4.3 プロキシ/スタブ共用可能イメージのリンク

プロキシ/スタブ共用可能イメージの依存関係の一覧は,クライアントおよびコンポーネント実行可能イメージの依存関係とは少し異なります。リンク時に発生する特定の依存関係は次のとおりです。

  • DCOM$WIN32:WINDU.OPT

  • SYS$LIBRARY:DCOM$RPCRT4_SHR.EXE



プロキシ/スタブ共用可能イメージのリンクでは,COM for OpenVMS が共用可能イメージ内で呼び出すエントリ・ポイントのシンボル・ベクタを作成しなければならないので,もう少し複雑になります。Win32 実行時環境では,DllMainエントリ・ポイントに対して標準の命名規則を適用しています。次の要素を含まなければなりません。

  • _Windu_接頭辞

  • 実際のエントリ・ポイント名

  • イメージ名の形式に応じて,イメージ名またはイメージ名の一部を含む接尾辞
    イメージ名が$SHRで終わる場合 (たとえば,PROXY$SHR),接尾辞はドル記号 ($) を含むイメージ名です。
    イメージ名が$SHR以外で終わる場合 (たとえば,PROXY_SHARE),接尾辞は完全なイメージ名てす。

たとえば,PROXY$SHRという名前のプロキシ/スタブ共用可能イメージは,次のオプション・ファイルを使用してシンボル・ベクタを定義します。


! 
! RPC Shareable Image 
! 
SYS$LIBRARY:DCOM$RPCRT4_SHR.EXE/SHARE 
! 
! 
! The list of symbols exported by PROXY$SHR.EXE. 
! 
SYMBOL_VECTOR=(- 
        _Windu_DllMain_PROXY$/DllMain   = PROCEDURE,- 
        DllGetClassObject               = PROCEDURE,- 
        DllCanUnloadNow                 = PROCEDURE,- 
        GetProxyDllInfo                 = PROCEDURE,- 
        DllRegisterServer               = PROCEDURE,- 
        DllUnregisterServer             = PROCEDURE) 

PROXY_SHAREという名前のプロキシ/スタブ共用可能イメージは,次のオプション・ファイルを使用してシンボル・ベクタを定義します。


! 
! RPC Shareable Image 
! 
SYS$LIBRARY:DCOM$RPCRT4_SHR.EXE/SHARE 
! 
! 
! The list of symbols exported by PROXY_SHARE.EXE. 
! 
SYMBOL_VECTOR=(- 
        _Windu_DllMain_PROXY_SHARE/DllMain = PROCEDURE,- 
        DllGetClassObject                  = PROCEDURE,- 
        DllCanUnloadNow                    = PROCEDURE,- 
        GetProxyDllInfo                    = PROCEDURE,- 
        DllRegisterServer                  = PROCEDURE,- 
        DllUnregisterServer                = PROCEDURE) 



6.5 必要な OpenVMS Registry エントリ

この後の節では,必要な OpenVMS Registry エントリについて説明します。

6.5.1 HKEY_CLASSES_ROOT\CLSID

CLSID サブキーには,システムでサポートされるコンポーネントのすべての CLSID が含まれます。コンポーネントの CLSID はここに登録しなければなりません。登録する各 CLSID には,次の要素を含まなければなりません。

  • 名前なし値。最後が 0 の文字列であり,コンポーネントを記述するデータ値です。

  • AppIDという名前付き値。最後が 0 の文字列あり,コンポーネントの CLSID を表すデータ値です。



クラス識別子 (CLSID) は,OLE クラス・オブジェクトに関連付けられたグローバル一意識別子 (GUID) です。COM for OpenVMS サーバ・アプリケーションは通常,CLSID を OpenVMS Registry に登録することで,クライアントが OLE クラス・オブジェクトに関連付けられた実行可能コードを検索して,ロードできるようにしています。

コンポーネントの CLSID はHKEY_CLASSES_ROOT\CLSIDというサブキーに登録します。

コンポーネント CLSID の登録には,次のサブキーを含まなければなりません。

  • LocalServer32

    このキーの値は最後が 0 の文字列であり,プロセス外サーバ実行可能イメージの場所を表すデータ値です。

  • ProgID

    このキーの値は最後が 0 の文字列であり,CLSID のプログラム ID を表すデータ値です。通常,program.component.version という形式です。

  • VersionIndependentProgID

    このキーの値は最後が 0 の文字列であり,CLSID のプログラム ID (バージョン番号を除く ID) を表すデータ値です。通常,program.component という形式です。

  • InProcServer32

    このキーの値は最後が 0 の文字列であり,プロセス内サーバ共用可能イメージの場所を表すデータ値です。

  • Type Libraries

    タイプ・ライブラリは,IDispatchインタフェースを実装するときに重要です。タイプ・ライブラリは,OLE オートメーションRegisterTypeLib実行時ルーチンを呼び出すときに,それ自体を登録します。 Typelibサブキーをコンポーネントの CLSID の下に追加しなければなりません。Typelibサブキーには,タイプ・ライブラリの GUID が含まれます。たとえば,次のキーには LIBID を含まなければなりません。


    HKEY_CLASSES_ROOT\CLSID\{GUID}\TYPELIB {value=LIBID} 
    



プロキシ/スタブ共用可能イメージは,インタフェースのパラメータをパッケージするためにインタフェース固有のオブジェクトを提供します。プロキシ/スタブ共用可能イメージにはオブジェクトが含まれるので,CLSID が必要であり,OpenVMS Registry に登録しなければなりません。プロキシの CLSID は,コンポーネントの CLSID と同じ方法で OpenVMS Registry に登録する必要があります。

プロキシの CLSID はHKEY_CLASSES_ROOT\CLSIDというサブキーに登録しなければなりません。

プロキシ/スタブ CLSID の登録には,次のサブキーを含まなければなりません。

  • InProcServer32

    InProcServer32の値は最後が 0 の文字列であり,プロキシ/スタブ共用可能イメージの場所を表すデータ値です。プロキシ/スタブ CLSID とそのサブキーを使用して,COM はプロキシ/スタブ共用可能イメージを検索することができます。



6.5.2 HKEY_CLASSES_ROOT\インタフェース

Interfaceサブキーには,システムに登録されているすべてのインタフェースが含まれます。コンポーネントのインタフェース ID (IID) をこのサブキーに登録しなければなりません。

登録される各インタフェースには,少なくとも次のいずれかのサブキーが含まれます。

  • NumMethods

    NumMethodsの値は最後が 0 の文字列であり,これはインタフェースに含まれるメソッドの数を表すデータ値です。

  • ProxyStubClsid32

    ProxyStubClsid32の値は最後が 0 の文字列であり,これはプロキシ/スタブ共用可能イメージの CLSID を表すデータ値です。この CLSID は,第 6.5.1.2 項 で説明したものと同じでなければなりません。



6.6 OpenVMS および Windows のエラー・コードのテキストへの変換

COM コンポーネントを開発し,テストする場合,OpenVMS システムと Windows NT システムから判読できないエラー・コードが返されることがあります。これらのコードをもっとわかりやすくするのに役立つように,Compaq はエラー・コードを表示可能なテキストに変換するための NTA$VMSGetMessage ルーチンを提供しています。

このルーチンを実装するには,NTA_MESSAGE.H ファイルを DCOM$LIBRARY: ディレクトリにインクルードし,DCOM$LIBRARY:NTA_GETMSG.OBJオブジェクト・モジュールとリンクしなければなりません。

この節では,NTA$VMSGetMessage ルーチンについて説明します。




NTA$VMSGetMessage ルーチンはエラー・コードを表示可能なテキストに変換します。入力エラー・コードは次のいずれかでなければなりません。

  • OpenVMS エラー・コード

  • Windows HRESULT

  • Windows Win32 エラー・コード

  • "ユーザ定義の" Windows NT 状態コード・セット


形式

Return=NTA$VMSGetMessage (status, text, flag, [count])




引数



status


OpenVMS使用法: error_code
タイプ: longword (unsigned)
アクセス: read only
メカニズム: by value


この状態フィールドは次のいずれかでなければなりません。

入力エラー・コード
OpenVMS エラー・コード 0x074AA6BA
Windows HRESULT 0x80070031
Windows Win32 エラー・コード 0x00000031
Windows NT ユーザ定義ビットがセットされた状態コード 0xE74AA6BA

セキュリティ API が Windows NT 状態コードを返す場合は,状態フィールドの形式は OpenVMS 状態コードと Windows NT 状態コントロール・ビット・セットの OR です。次の例を参照してください。

入力エラー・コード 結果
OpenVMS エラー・コード 0x074AA6BA
Windows NT 状態コード 0xE74AA6BA



text


OpenVMS使用法: error_text
タイプ: character string
アクセス: write
メカニズム: by reference


この引数は最後が NULL の文字列であり,SYS$GETMSG システム・サービスから返されたテキストが含まれます。返される最大サイズ (SYS$GETMSG システム・サービスで定義されているサイズ) は 256 バイトです。メモリが上書きされないようにするために,呼び出し側は少なくとも 257 バイトのバッファ・アドレスを提供しなければなりません。

flag


OpenVMS使用法: flag
タイプ: longword (unsigned)
アクセス: read only
メカニズム: by value


エラー・コードの変換を制御します。次の値は NTA_MESSAGE.H に定義されています。

NTAWIN$_UNKNOWN 不明のエラー・コード
NTAWIN$_VMS OpenVMS エラー・コード
NTAWIN$_NT Windows HRESULT エラー・コード
NTAWIN$_WINDOWS Windows Win32 エラー・コード
NTAWIN$_USER Windows NT 状態コード

NTAWIN$_UNKNOWN という値を指定した場合は,できるだけ正しいテキストを作成できるように,最適な見積もりが行われます。ルーチンはテキストを次のように解析します。

  1. まず,Windows HRESULT であるかどうか確認します (上位ニブル = 0x8)。Windows HRESULT でない場合は,次のステップに進みます。

  2. 次に,Windows NT のユーザ定義状態コードであるかどうか確認します (上位ニブル = 0xE)。この条件が満たされない場合は,次のステップに進みます。

  3. これは OpenVMS エラー・コードであると判断されます。

    OpenVMS エラー・コードと Windows Win32 エラー・コードの区別はできません。



count


OpenVMS使用法: FAO count
タイプ: longword (unsigned)
アクセス: write
メカニズム: by reference


この引数は,戻りメッセージに任意に返される FAO 引数の数です。現在,すべての NTAWIN メッセージで ASCII 置換引数 (!AS) だけが使用されています。呼び出し側は SYS$FAO で置換する前に,すべての数値データを ASCII に変換しなければなりません。

説明このルーチンは OpenVMS SYS$GETMSG システム・サービスを使用します。メッセージは SYS$MESSAGE:NTAWINMSG.EXE イメージと SYS$MESSAGE:NTARPCMSG.EXE イメージに格納されます。

このルーチンを呼び出すには,NTA_MESSAGE.H ファイルを DCOM$LIBRARY: ディレクトリにインクルードし,SYS$LIBRARY:DCOM$WIN32_SHR 共用可能イメージとリンクしなければなりません。




返される条件値

SYS$GETMSG システム・サービスからの状態

SYS$GETMSG システム・サービスの詳細については,『OpenVMS System Services Reference Manual』を参照してください。


目次 索引

印刷用画面へ
プライバシー 本サイト利用時の合意事項 ウェブマスターに連絡