エンドユーザが、FTDIのWindowsドライバを未インストールでアプリを実行した場合、対象機器と通信不能なってしまい苦情に繋がる場合があります。 そこで弊方では、FTDIのWindowsドライバをインストール済みチェックを、対象のアプリに入たりしています。
コード例は以下です。Win32APIで書いています。
#define FTDI_DRIVER_PATH "\\Drivers\\ftser2k.sys" // ドライバ実体path
// ドライバの64bit互換ディレクトリ取得
GetWindowsDirectoryA( dir, MAX_PATH );
strcat( dir, "\\Sysnative" );
strcat( dir, FTDI_DRIVER_PATH );
if ( PathFileExists( dir ) == FALSE ) { // path実在なし
// ドライバの通常ディレクトリ取得
// ※"Sysnative"は32bitでも効くというが、Win8.1ではNGだった
GetSystemDirectoryA( dir, MAX_PATH );
strcat( dir, FTDI_DRIVER_PATH );
if ( PathFileExists( dir ) == FALSE ) { // path実在なし
// インストール不正
// エラーメッセージを表示
}少し解説すると、
- sysファイルは代表して、ftser2k.sys を用いています。
- Sysnative とPathFileExists は、64bitOSで “System32\Drivers” を明示せず参照するためのコードです。
FTDIのWindowsドライバをインストール済みPCにて、二か月前、アプリを実行すると、”エラーメッセージの表示“のパスに到達してしまいました。ディレクトリを調べると、以下のように確かに ftser2k.sys が無くなっていました。


ftser2k.sys を探すとなにかのアーカイブの中にいました。

SysWow64 側に移動したのかとみてみましたが、そんなことは有りません。

そのまま放置して2か月後、 ftser2k.sys はなぜか戻っていました。

結論: Windows Update で戻ったのかもしれません。