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

# 1 COM for OpenVMSに関するリリース・ ノート

# 1.1 リリース・ノート

ここで説明する情報は本リリースに適用されます。

## 1.1.1 COM Version 1.0 for OpenVMSからCOM Version 1.1 for OpenVMSへのアップグレード

COM Version 1.0 for OpenVMSからCOM Version 1.1 for OpenVMSにアップグレードする場合は， 付録 Dと第4.3節に示すアップグレードの手順に従ってください。

## 1.1.2 DCOM$RPCSSプロセス・リソース全部の消費

COM for OpenVMS実行時環境では， `DCOM$RPCSS` プロセスが常に実行されている必要があります。

`DCOM$RPCSS` が多くのCOM for OpenVMSアプリケーション・サーバを作成または削除した後， `DCOM$RPCSS` がリソースをすべて消費してしまうことがあることがテスト中にわかりました。 この状況になると， `DCOM$RPCSS` は自動的に再起動しようとします。 `DCOM$RPCSS` がシステムで実行されていない場合や， ハングしているように見える場合は，次のコマンドを使用して `DCOM$RPCSS` をいったん停止した後，再起動してください。

           $ @SYS$STARTUP:DCOM$SHUTDOWN
           $ @SYS$STARTUP:DCOM$STARTUP

`SYS$MANAGER:DCOM$RPCSS.OUT` ファイル記録されているエラー・ メッセージと情報メッセージを確認できます。また，正常に動作していないアプリケーション・ サーバ・プロセスがないかどうか確認し，必要に応じてプロセスを停止する必要があります。

## 1.1.3 IDispatchインタフェースを介して値を渡すときの浮動小数点の制限事項

複数の浮動小数点パラメータ(単精度または倍精度) を`IDispatch` インタフェースに値で渡すときに，問題が発生することがあります。

複数の浮動小数点パラメータを使用するコンポーネント・メソッドは， `IDispatch` インタフェースを介してアクセスした場合， 予測できない動作で終了します。浮動小数点パラメータを参照で渡した場合は， このエラーは発生しません。この制限は将来のリリースで解決される予定です。

## 1.1.4 COM for OpenVMSを実行するには， DECwindows Motif [R]が必要

COM for OpenVMSを実行するシステムには， DECwindows Motif for OpenVMSをインストールしなければなりません。 DECwindows Motifがシステムにすでにインストールされている場合は， 改めてインストールする必要はありません。DECwindows Motifがシステムにインストールされていない場合は，OpenVMS Version 7.2-1 のCD-ROM の`[KITS.DWMOTIF125_KIT]` ディレクトリに格納されているDECwindows Motif のインストール・キットを利用してください。

注意
  COM for OpenVMSを使用するためにだけ，DECwindows Motifをインストールする場合は，DW-MOTIF ライセンスは必要ありません。

## 1.1.5 MIDL -wスイッチ

MIDLコンパイラでは，`-w` または`-warn` を指定することで， コンパイラが生成する警告のレベルを下げることができます。OpenVMS 用のMIDLコンパイラでは，`-w` スイッチだけがサポートされます。

## 1.1.6 MIDLコンパイラはwchar_tリテラルをcharとして取り扱う

COM for OpenVMSのこのリリースで，DEC Cバージョン5.7 またはそれ以前のバージョンを使用する場合，IDLファイル内のワイド文字のリテラル文字列は， 誤って"char"データ型として取り扱われます(DEC C バージョン6.0以上を使用している場合は，このリリース・ ノートは適用されません)。

たとえば，IDLファイルに次の文字列リテラルが格納されているとしましょう。

             const wchar_t * PROGRAM_ID     = L"Sample.Component";

Microsoft Windows NTでMIDLコンパイラを使用すると，次のマクロ定義が作成されます。

             #define PROGRAM_ID      ( L"Sample.Component" )

しかし，COM for OpenVMS用のMIDLコンパイラでは， デフォルトで次のマクロ定義が作成されます。

             #define PROGRAM_ID      ( "Sample.Component" )

この問題を回避するには，次の操作を行います。

1. できる限り，DEC Cプリプロセッサを使用しないようにします。

   プリプロセッサを使用せずにMIDLコンパイラを実行するには，コマンド・ ラインに`-nocpp` または`-no_cpp` スイッチを指定します。 次の例を参照してください。

                $ midl -Oicf -nocpp -idcom$library: server.idl

   重要
     IDLソース・ファイルや， メインのIDLソース・ファイルからインポートされたIDLソース・ファイルに条件付きアセンブリ・ スイッチ(たとえば，`#ifdef" . . . "#endif"` )が含まれている場合は，この方法は使用しないでください。

2. すべての文字列定数を"wchar_t"タイプではなく，"char"タイプとして定義します。

   この方法を使用すると，Microsoft Windows NTのMIDLコンパイラもOpenVMS のMIDLコンパイラも，ワイド文字ではない文字列定数を作成します。 ソフトウェアでワイド文字の文字列リテラルが必要な場合は， 値を使用する前に，ソフトウェアでANSI文字列をワイド文字の文字列に変換できます。

3. IDLソース・ファイル内で，ワイド文字の文字列定数をマクロ定義に置き換えます。

   たとえば，文字列リテラルを次のように定義する代わりに，

                const wchar_t * PROGRAM_ID     = L"Sample.Component";

   次に示すように，IDL `cpp_quote()` の内部で `#define` を使用します。

                cpp_quote("#define PROGRAM_ID L\"Sample.Component\"")

   DEC Cプリプロセッサを使用する場合でも，Microsoft Windows NTとOpenVMS 用のMIDLコンパイラで作成される出力ヘッダ・ファイルは次のようになります。

                #define PROGRAM_ID L"Sample.Component"

## 1.1.7 プロセス内サーバのリモートからのアクティブ化

サーバ・コンポーネントがプロセス内サーバとしてだけ登録されている場合， そのコンポーネントをOpenVMSでリモートからアクティブ化することはできません。 システムがプロセス内サーバをリモートからアクティブ化しようとすると， リモート・クライアントは"REGDB_E_CLASSNOTREG (80040154)"エラーを受信します。サーバ・コンポーネントをリモートからアクティブ化するには， コンポーネントをプロセス外サーバとして登録し， `DCOM$RPCSS` プロセスがクライアントの代わりにコンポーネントを起動できるようにしなければなりません。

## 1.1.8 COM for OpenVMSのセキュリティ:COM Version 1.0 for OpenVMSとCOM Version 1.1 for OpenVMSの相違点

次の表は，COM Version 1.0 for OpenVMSとCOM Version 1.1 for OpenVMSの相違点を示しています。

### 表 1-1 セキュリティの相違点の要約

領域 | COM Version 1.0 for OpenVMS | COM Version 1.1 for OpenVMS
--- | --- | ---
クライアント要求 | Windows NTでは認証される。OpenVMSへの要求では認証されない。 | Windows NTとOpenVMSで認証される。
セキュリティ | Windows NTでは，サーバはクライアントのアイデンティティで動作でき，OpenVMS ではあらかじめ指定されたOpenVMSのアイデンティティで動作できる。 | Windows NTとOpenVMSの両方で，サーバはクライアントのアイデンティティで動作できる。
セキュリティ | Windows NTではメソッド単位のセキュリティが認められるが，OpenVMS ではプロセス単位のセキュリティだけが認められる。 | Windows NTとOpenVMSの両方で， メソッド単位のセキュリティが認められる。
アウトバウンドCOM要求 | Windows NTでのみ認証される。 | Windows NTとOpenVMSで認証される。
レジストリ | Windows NT: NTの資格情報で制御される。 OpenVMS:特権やライト識別子などのOpenVMSセキュリティ制御機能に依存する。 | Windows NT: NTの資格情報で制御される。 OpenVMS: Windows NTの資格情報またはOpenVMSセキュリティ制御によって制御される。
イベント・ログ | Windows NTのみ。 | Windows NTとOpenVMS の両方。

## 1.1.9 DCOM$CNFGユーティリティとアプリケーションの無効化: 操作によって起こる副次作用

COM for OpenVMS `DCOM$CNFG` ユーティリティには，開発者がアプリケーションのプロパティを変更するために使用できるオプションがいくつかあります( たとえば，アプリケーションを実行できるコンピュータのロケーションの変更など) 。 これらのオプションを選択すると，OpenVMS Registryエントリが変更されます。

OpenVMS Registryでは，クラスタ内で1つのデータベースがサポートされるので， これらのオプションのいずれかを変更すると，COM for OpenVMS を稼動しているクラスタ内のすべてのノードに影響があります。

たとえば，`「System-wide Default Properties」`サブメニューのオプション1 を使用して，COM for OpenVMSを無効化すると，クラスタ全体でCOM for OpenVMSが無効化されます。同様に，`「Application Location」`サブメニューのオプション1を使用して，このコンピュータでアプリケーションを実行することを禁止すると， クラスタ内のどのコンピュータでもそのアプリケーションを実行できなくなります。

## 1.1.10 COM for OpenVMSでサポートされるスレッド・モデル

COM Version 1.1 for OpenVMSでは，アプリケーション・ サーバに対してマルチスレッド・アパートメント(MTA，フリー・ スレッドとも呼ばれる)モデルのみがサポートされます。マルチスレッド・ アパートメント・モデルでは，コンポーネントは複数のスレッドを持つことができます。 しかし，コードがスレッド・セーフであることを確認する必要があります。

スレッド・モデルの初期化呼び出しは次のとおりです。

         CoInitializeEx(
            NULL,
            COINIT_MULTITHREADED
            )

`CoInitialize()` はシングル・スレッド・アパートメント(STA) モデルを暗黙に示すので，サーバ・アプリケーションで `CoInitializeEx()` の代わりに使用することはできません。

## 1.1.11 COM for OpenVMS Service Control Managerの起動とシャットダウンの変更

COM for OpenVMSの以前のバージョンでは， 独立プロセスDCOM$RPCSSが実際に動作しているのか(つまり，初期化を完了したのか) ，まだ初期化中であるのかを確認できないことがありました。

今回のリリースでは，DCOM$RPCSS.EXEイメージが変更されており，状態に応じて異なるプロセス名が表示されるようになりました。DCOM$RPCSS.EXE イメージが初期化を実行している間は，プロセス名は"DCOM$STARTUP- **"になります。DCOM$RPCSS.EXEイメージが実行中の場合は，プロセス名は"DCOM$RPCSS" に変化します。プロセスが異常終了して再起動しなければならない場合は， プロセス名は"DCOM$STARTUP-**"に戻ります。

`DCOM$STARTUP.COM` と`DCOM$SHUTDOWN.COM` はどちらも， いずれかのプロセス名を検索するように変更されています。

COM for OpenVMSの起動の詳細については， 第4.12節を参照してください。COM for OpenVMS のシャットダウンの詳細については， 第4.13節を参照してください。

## 1.1.12 CoQueryProxyBlanket ( )とCoQueryClientBlanket ( ) は有効な主名文字列を返さない

`CoQueryProxyBlanket()` と`CoQueryClientBlanket()` APIは有効な主名文字列を返しません。 これらのAPIを使用して主名を取得することはできません。

## 1.1.13 ローカル・サーバ・パスに対して論理名を使用する登録済みアプリケーション

ローカル・サーバ・パスに対して論理名を使用するCOMアプリケーションをすでに登録している場合は， ローカル・サーバ・パスの実際の名前を使用するようにアプリケーションを変更( 再登録)しなければなりません。

たとえば，`REGISTER_SIMPLE.COM` コマンド・プロシージャを使用して，COM Version 1.0 for OpenVMSで"Simple"アプリケーションを登録した場合は，新しい `REGISTER_SIMPLE.COM` コマンド・プロシージャを使用して"Simple" アプリケーションを再登録する必要があります。

COM Version 1.1 for OpenVMSの登録コマンド・ ファイルは更新されています。

システムは次に示すように，COMアプリケーション・ローカル・サーバ・ パスを値データとしてOpenVMS Registryに格納します。

         "HKEY_CLASSES_ROOT\CLSID\{GUID}\LOCALSERVER32"

ローカル・サーバ・パスを変更するには，次のREG$CPコマンドを使用します。

         $ MCR REG$CP CREATE VALUE
         HKEY_CLASSES_ROOT\CLSID\{GUID}\Localserver32 -
         /TYPE=SZ/DATA=device:[directory]IMAGENAME.EXE

GUIDはCOMアプリケーションのCLSIDです。Localserver32とCLSIDの詳細については， 第6.5節を参照してください。

## 1.1.14 SAFEARRAYの制約

COM for OpenVMS MIDLコンパイラはMicrosoft のMIDLコンパイラV3.00.44を基礎にしているため，COM for OpenVMSでは，SAFEARRAY の使用は.IDL ファイル内のLIBRARYブロックの内部でのみサポートされます。Microsoft のMIDLコンパイラV3.00.44にも同じ制約があります。

## 1.1.15 COM Version 1.0 for OpenVMSとCOM Version 1.1 for OpenVMSは同じクラスタ内でサポートされない

クラスタ内のノードにCOM Version 1.1 for OpenVMSをインストールして構成する場合，同じクラスタ内の他のノードでCOM Version 1.0 for OpenVMS が実行されないように，OpenVMS Registry をクラスタ全体で変更しなければなりません。

## 1.1.16 COM for Version 1.1 for OpenVMS用にOpenVMS Registryの値の再登録が必要

COM Version 1.1 for OpenVMSでは， セキュリティの設定を含むように，OpenVMS Registryの値を再登録しなければなりません。DCOM$SETUPコマンドを使用して「OpenVMS COM Tools 」メニューを表示し，オプション3を選択します。

COM Version 1.1 for OpenVMSでOpenVMS Registryの値を再登録すると， 再登録を確認するメッセージが表示されます。 そのたびに`YES` と応答します。次の例を参照してください。

                 [ Starting to Populate the COM for OpenVMS Registry ]

                  Populating the Registry for OpenVMS may take up to 15 minutes
                  depending on your system.

         Enter Y[ES] to continue: YES

                  The COM for OpenVMS Registry has already been loaded. This
                  action will overwrite the current COM for OpenVMS values
                  and data.

         Enter Y[ES] to continue: YES

## 1.1.17 拡張NTLMを有効にした状態でのSP4はサポートされない

COM Version 1.1 for OpenVMSでは，次の制限のもとにNT SP4 がサポートされます。COM Version 1.1 for OpenVMSでは，拡張NTLMを有効にした状態でSP4はサポートされません。

COM Version 1.1 for OpenVMSをSP4と組み合わせて使用する場合は， 拡張NTLMが無効に設定されていることを確認してください。

SP4の拡張NTLMを無効にした状態では，SP4とCOM for OpenVMSは協調動作するように見えますが，SP4はCOM for OpenVMSと組み合わせて使用した状態で完全にテストされておらず， 公式にはサポートされません。

弊社で行ったSP4に関するテストでは，SP4と拡張NTLMを無効にした状態で，12 文字より長いパスワードを使用した場合，認証要求が失敗するという制限が確認されています。

## 1.1.18 信頼されるドメインの認証をサポートするためのパッチ・ キット

COM for OpenVMSのこのリリースでは，信頼されるドメインの認証はサポートされません。 弊社はこの機能を提供するためにパッチ・ キットを準備しています。

キットが提供される時期については，COM for OpenVMSのWebサイトを参照してください。COM for OpenVMSのWebサイトのアドレスは次のとおりです。

    http://h71000.www7.hp.com/openvms/products/dcom/

## 1.1.19 IGNORE_EXTAUTHをサポートするためのパッチ・キット

COM for OpenVMSのこのリリースでは， SECURITY_POLICYシステム・パラメータのIGNORE_EXTUATHフラグはサポートされません。 弊社はこの機能を提供するためにパッチを準備しています。

パッチの詳細については，COM for OpenVMSのWebサイトを参照してください。COM for OpenVMSのWebサイトのアドレスは次のとおりです。

    http://h71000.www7.hp.com/openvms/products/dcom/

## 1.1.20 DCOM$RPCSSは再起動時にストールする

クラスタ内でDCOM$RPCSSを稼動しているシステムがクラッシュし，再起動すると，DCOM$RPCSS プロセスは起動時にハングすることがあります。この状況では， プロセス名は`DCOM$STARTUP-**` のままであり， SYS$STARTUP:DCOM$RPCSS.OUTファイルに次のエラー・メッセージが記録されます。

           %PPL-W-SYSERROR, system service error
           -SYSTEM-W-VALNOTVALID, value block is not valid

この状態から回復するには，ストールされたプロセスを停止し，次のコマンドを入力してCOM for OpenVMS を再起動します。

           $ @SYS$STARTUP:DCOM$STARTUP

## 1.1.21 2つのOpenVMSシステム間でのCOM for OpenVMSの使用

2つのOpenVMSシステム間でCOMアプリケーションを実行するには，2つのOpenVMS システムがどちらも同じドメインに存在しなければなりません。 OpenVMSシステムが同じドメイン内にない場合は，メソッド呼び出し時に認証が失敗します。OpenVMS システムとWindows NTシステムの間でアプリケーションを実行している場合は， この制限は適用されません。

この制限をなくすために，弊社はパッチ・キットを準備しています。

キットの詳細については，COM for OpenVMSのWebサイトを参照してください。COM for OpenVMSのWebサイトのアドレスは次のとおりです。

    http://h71000.www7.hp.com/openvms/products/dcom/

## 1.1.22 特定のエラー・メッセージ

ここでは，特定のCOM for OpenVMSエラー・ メッセージについて説明します。

### 1.1.22.1 RPC Cannot Supportエラー(800706E4)

シングル・スレッド・アパートメント(STA)モデルを使用しようとすると， 一部のCOM APIで次の戻り状態コードが表示されることがあります。

           (800706E4)

このモデルはCOM Version 1.1 for OpenVMSではサポートされません。詳細については，第1.1.10項を参照してください。

### 1.1.22.2 RPC Server Unavailableエラー(800706BA)

特定の状況で，Windows NTでクライアント・アプリケーションを実行し， OpenVMSでサーバ・アプリケーションを実行している場合，次のエラーが発生することがあります。

           RPC server unavailable (800706BA)

このエラーに対処するには，サーバ・アプリケーションをいったん停止して再起動した後( アプリケーションを手動で起動した場合)，クライアント・ アプリケーションを再起動します。

### 1.1.22.3 RPC WHO_ARE_YOUエラー(EE1282FA)

特定の状況で，クライアントとサーバの間で通信するときに，次のエラーが発生することがあります。

         rpc_s_who_are_you_failed (EE1282FA)

このメッセージが表示された場合は，操作を再実行してください。

弊社はこの問題を解決するために，パッチを準備しています。

### 1.1.22.4 RPC PROTOCOLエラー(800706C0)

特定の状況で，クライアントとサーバの間で通信するときに，次のエラーが発生することがあります。

           rpc_s_protocol_error (800706C0)

このメッセージが表示された場合は，操作を再実行してください。

弊社はこの問題を解決するために，パッチを準備しています。

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