本ページは公開が終了したページの複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。

[SDK16] OLE2.0x のCoCreateGuid API の障害と対処方法について

PWJ2575 - 95/06

この資料は以下の製品について記述したものです。

概要

この資料は、PC/AT コンパチブルでない機種上でネットワークを起動していない時、16 ビット版 OLE .0x のCoCreateGuid APIを呼び出すと、システムがハングアップなどの誤動作をすることについて説明し、対処方法を示したものです。

詳細

PC/AT コンパチブルでない機種上でネットワークを起動していない時、16 ビット版 OLE 2.0x のCoCreateGuid APIを呼び出すと、システムがハングアップなどの誤動作をする場合があります。

CoCreateGuid API は、固有な ID(Guid) を生成するために使われる OLE2.0x の API です。CoCreateGuid は、オブジェクトを区別するための固有な ClassID などの生成に利用されています。

CoCreateGuid API は、NetBios の有無をチェックし、NetBios が存在する(ネットワークを起動している)場合には、NetBios で、Network カードのアドレス番号(カードごとに固有な値)を取得し、それをもとに確実に固有な ID を生成します。また、NetBios が存在しない場合は、ソフトウェアで ID を生成しています。

現象1)

16 ビット版の OLE 2.0x を再配布するアプリケーションを作成している場合。そのアプリケーションが、PC/AT コンパチブル以外の機種にインストールされた時に、インストール先のシステムで誤動作する可能性があります。

現象2)

PC/AT コンパチブル以外の機種でOLE 2.0x SDK に含まれる GuidGen.exeを利用してGuid を取得する場合。GuidGen.exe を実行すると、ハングアップする場合があります。

現在弊社にてOLEモジュールの修正を検討しておりますが、当該モジュールが既に広く流通しているため、現行バージョンでの対策が必要であろうと考えております。そこで当面の対策として、OLE 2.0xとともに出荷されるアプリケーションのセットアップ・プログラムにおきまして、下記の通りの処理を施していただきたくお願い申し上げます。

原因

この障害は、PC/AT コンパチブル以外の機種で NetBiosの有無のチェックが正しくおこなわれず、NetBios が存在しないにもかかわらず、NetBios を利用しようとするために発生しています。

対策

現象1) に対して、そのアプリケーションのセットアップ プログラムで、WritePrivateProfileString API を利用してCompobj.ini の [CoCreateGuid] セクションに、以下の行を追加します。

ForceRandom=1

現象2) に対して、

Windows ディレクトリ直下の Compobj.ini の [CoCreateGuid] セクションに、以下の行を記述します。

ForceRandom=1

ForceRandom=1 を指定すると、CoCreateGuid は NetBios を利用せず、常にソフトウェアで ID を生成するようになります。

その他

(C)1995 Microsoft Corporation. All rights reserved.

マイクロソフト株式会社 テクニカル サポート


UP
UP
Home
HOMEPAGE
inserted by FC2 system