第4章 リファレンス
1. DioOpen
© 2000, 2014 Interface Corporation. All rights reserved.
【戻り値】
DioOpen関数が正常に終了した場合には、有効なハンドルが返されます。
他の関数は、本関数により取得したハンドルを使用してデバイスの制御を行います。
オープンに失敗した場合には、INVALID_HANDLE_VALUE(FFFFFFFFh)が返されます。
【備考】
●FBIDIO_FLAG_SHARE の動作について
本フラグを指定することにより、同じデバイスを 2 つ以上のアプリケーションで共有すること が可能となります。FBIDIO_FLAG_SHARE を指定せずにオープンされているデバイスに対して、
FBIDIO_FLAG_SHARE を指定したオープンを実行した場合、オープンは失敗します。
オープン(DioOpen関数)とクローズ(DioClose関数)の実行回数は必ず一致しなければなりま せん。
●デバイス名について
オープンするにはデバイス名を指定します。
デバイス名はインタフェースモジュール上のロータリスイッチ(RSW1)の値で決定されるわけ ではありません。OS がインタフェースモジュールを認識した順番により決定されます。
使用するインタフェースモジュール枚数やスロット位置の変更等でシステム構成が変化すると 割り当てられる名前が変化する場合があります。システム構成が変化する環境でご使用になる 場合は、デバイス名の指定が変更できるようにアプリケーションを作成ください。インタフェ ースモジュール上に実装されたRSW1(インタフェースモジュールID設定)の値を取得し、アプ リケーションで目的のインタフェースモジュールであるかを判断することができます。詳しく は、DioCommonGetPciDeviceInfo関数 の説明をご参照ください。
CardBus シリーズにつきましては、カードバス ID 設定ユーティリティで設定した ID がインタ フェースモジュール ID として取得されます。
各デバイス名の確認は、Windows 2000 以降または Windows Me/98/95 の場合、デバイスマネー ジャにて確認できます。
デバイスマネージャに「FbiPciDio」が追加され、認識された弊社デジタル入出力デバイスが一 覧表示されます。一覧の製品型式の横にインタフェースモジュール上のロータリスイッチの値 とデバイス名が表示されます。
DI入力ユーティリティ(DIUTIL.EXE)、DO出力ユーティリティ(DOUTIL.EXE)でも確認できます。
Windows NTでは、DI入力ユーティリティ(DIUTIL.EXE)、DO出力ユーティリティ(DOUTIL.EXE)
にて割り当てられたデバイス名をご確認ください。
●UNICODE 文字列について
C 言語(x86 専用)で、DioOpen の引数 Name に指定する文字列は LPCTSTR 型として定義していま すが、UNICODE 文字列には対応しておりません。
x86 環境でご使用になる場合、使用例に沿って記述してください。
【使用例】
●C 言語(32bit 用コンパイラ) HANDLE DeviceHandle;
DeviceHandle = DioOpen(“FBIDIO1”, FBIDIO_FLAG_SHARE);
●C 言語(32bit 用コンパイラで UNICODE を定義している場合) HANDLE DeviceHandle;
DeviceHandle = DioOpen((LPCTSTR)“FBIDIO1”, FBIDIO_FLAG_SHARE);
HANDLE DeviceHandle;
char* lpszName = “FBIDIO1”;
DeviceHandle = DioOpen((LPCTSTR)lpszName, FBIDIO_FLAG_SHARE);
HANDLE DeviceHandle;
LPCWSTR UnicodeName = L"FBIDIO1";
char DeviceName[256];
int len;
len = WideCharToMultiByte(CP_ACP, 0, UnicodeName, -1, NULL, 0, NULL, NULL);
WideCharToMultiByte(CP_ACP, 0, UnicodeName, -1, DeviceName, len, NULL, NULL);
DeviceHandle = DioOpen((LPCTSTR)DeviceName, FBIDIO_FLAG_SHARE);
●C 言語(64bit 用コンパイラ) HANDLE DeviceHandle;
DeviceHandle = DioOpen(“FBIDIO1”, FBIDIO_FLAG_SHARE);
●Visual Basic Dim Name As String Dim DeviceHandle As Long Name = "FBIDIO1" & Chr( 0 )
DeviceHandle = DioOpen(Name, FBIDIO_FLAG_SHARE)
© 2000, 2014 Interface Corporation. All rights reserved.
●Delphi var
Name: String;
DeviceHandle: THandle;
Name := 'FBIDIO1';
DeviceHandle := DioOpen(Name, FBIDIO_FLAG_SHARE);
デバイス名「FBIDIO1」のデバイスを重複オープン許可でオープンします。