FTDIドライバのsysファイルが見つからない場合があるとき

エンドユーザが、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 を用いています。
  • SysnativePathFileExists は、64bitOSで “System32\Drivers” を明示せず参照するためのコードです。

FTDIのWindowsドライバをインストール済みPCにて、二か月前、アプリを実行すると、”エラーメッセージの表示“のパスに到達してしまいました。ディレクトリを調べると、以下のように確かに ftser2k.sys が無くなっていました。

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

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

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

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です