よくあるご質問 | コンテック FAQ
初期化処理(DioOpen関数、DioOpenEx関数)でドライバオープンエラー(002H)が発生します
対象製品型式: API-DIO(98/PC)
対象OS:
Windows Vista/XP/2000/NT/Me/98/95
関連情報:
まずはお客様の自作プログラムだけで発生するのか、診断プログラムでも発生するのかを確認してください。
■診断プログラムでも発生する場合
A1
例えば、プログラムの開発をWindowsXPで行って、プログラムの実行をWindows Meで行った場合、Windows NT系
のAPIDIO.DLLがシステムディレクトリに入っていると、ドライバオープンエラーが発生します。
APIDIO.DLLには、Windows 95系OS用とWindows NT系OS用の2種類があります。それぞれの処理内容が
異なるため、このファイルが間違って入っていると、このエラーの発生原因となります。
この場合の回避策は、以下の2通りの何れかです。
①API-PAC(W32)のCDを持っている場合
CD-ROMドライブの\Release\API_NT(API_W95)\DIOから、APIDIO.DLLをエクスプローラでコピーして、
C:\WINDOWS\SYSTEM(Win95系)、またはC:\WINNT(WINDOWS)\SYSTEM32(NT系)
に上書きする。
②API-PAC(W32)のCDを持っていなくて、ダウンロードした場合
API-DIO(98/PC)の実行環境を、コントロールパネルのアプリケーションの追加と削除から、アンインストールし、
さらに、上記のAPIDIO.DLLを、C:\WINDOWS\SYSTEM
(SYSTEM32)からエクスプローラで削除し、その上で、API-DIO(98/PC)の実行環境を再インストールし、API-TOOL
コンフィグレーションでの設定(アンインストールすると消える)をやり直す。
A2
VBで作成された自作アプリケーションをディストリビューションウィザード(VB6添付のインストーラ作成ツー
ル)インストールされている場合、このような現象がよく発生します。ディストリビューションウィザードを使
用される場合、同じ系列のOS(95系またはNT系)でインストーラを作成してください。
■自作プログラムだけで発生する場合
この場合、以下のいくつかの内の一つである可能性が高いです。
①プログラムのフォルダにAPIDIO.DLLが存在する。
例えば、プログラムの開発をWindowsXPで行って、プログラムの実行をWindows Meで行う場合、カレントのフォ
ルダにWindows NT系のAPIDIO.DLLがあると、ドライバオープンエラーが発生します。APIDIO.DLLには、
Windows 95系OS用とWindows NT系OS用の2種類があります。それぞれの処理内容が異なるため、このファイルが
混在すると、エラーの原因となります。
②プログラムのDioOpenで使用している引数が間違っている。
診断プログラムでは、必ずAPI-TOOL コンフィグレーションで設定したドライバ番号とグループ番号でDioOpenを
呼び出しますが、自作プログラムでこの番号が、設定と異なる場合、自作プログラムでのみドライバオープンエ
ラーとなります。
■その他
Windowsのスタートアップに登録したアプリケーションでドライバオープンエラーが発生する場合は、デバイス
ドライバの起動する以前に初期化処理関数 DioOpen が実行されていることが考えられます。デバイスドライバ
の起動タイミングは、PCの環境により異なります。
対策としては、アプリケーション側でドライバが起動したことを確認するプログラムを組込むことが必要です。
アプリケーションの初期化処理を実行する際に以下のようなシーケンスを組込むことでドライバ起動の確認がで
きます。

但し、ループに関しては、無限ループにならないように考慮してください。