WinI2C-DDC Kernel Mode Driver サービスのエラーについて
PC(Windows 7 Professional x64 SP1)のイベントビュアーに次のエラーがOS起動時に毎回記録されている。
「ログの名前: System
ソース: Service Control Manager
日付: 2014/02/02 13:50:13
イベント ID: 7000
タスクのカテゴリ: なし
レベル: エラー
キーワード: クラシック
ユーザー: N/A
コンピューター: PC-XXXXX
説明:
WinI2C-DDC Kernel Mode Driver サービスを、次のエラーが原因で開始できませんでした:
指定されたファイルが見つかりません。…〈以下略〉…」
というものである。
このエラーはここ1か月間記録され続けているが、PCの使用には特に不都合はないようである。とはいうものの、気持ちのよいものではないので、その原因を特定し、可能であればそのエラーを回避したい。ウェブで調べてみたが、はっきりとしたことは分からなかった。しかし、このドライバについての情報は得られた。
このWinI2C-DDC Kernel Mode Driverは、Nicomsoft社のWinI2C/DDCというベンダー向けのモニター用ツールを構成するドライバである。このWinI2C/DDCは、DDC/CIというプロトコルを介してWindows環境でモニターをコントロールするものであり、キャリブレーション等を行うソフトウェアに組み込まれるものだと、同社のウェブサイトで紹介されている。取引先として、富士通周辺機、Philips、Intel等の名が挙げられている。その本体であるddcdrv.sysは、通常のドライバと同様C:\Windows\system32\drivers内に置かれるとされる。
このDriverサービスは、「管理ツール」内の「サービス」(services.msc)には表示されていないので、レジストリを調べてみることにした。
レジストリに[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\WinI2C-DDC]というキーが存在する。その中の[ImagePath]は[\??\C:\Windows\system32\drivers\DDCDrv.sys]となっており、[Start]の「値のデータ」は[2]とされている。
となると、[2]は「自動」を意味している。なるほど。今現在、我が機にはddcdrv.sysは存在しない。にもかかわらず、そのファイルを指定するサービスが自動で開始するように設定されている。これがためにエラーが記録されているのである。同じOSを使う他のPCには、このレジストリキーはない。
では、なぜ存在しないddcdrv.sysというファイルを指定するこのようなキーが作られたのか。
このエラーが最初に記録された日まで遡って、その日にPCに対して行ったことを調べてみた。原因は、EIZO EasyPIX Softwareというカラー・マッチングを行うソフトをVer.1.1.4からVer.2.3.2に更新したことによるものであった。
EIZO EasyPIX Software Ver.1.1.4をインストールすると、前述のレジストリキーが作成され、ddcdrv.sysもC:\Windows\system32\drivers内にインストールされる。従って、このバージョンを使っている間は、問題は生じなかった。ところが、これを、Ver.2.3.2にアップデートするために、アンインストールすると、ddcdrv.sysは削除されるが、キーだけは残るのである。改めてVer.2.3.2をインストールしても、その更新バージョンはこのキーを削除することも、ddcdrv.sysをインストールすることもないため、キーはそのままの内容で残ることになる。これがエラーの原因である。
専用のセンサーを使わずに目視によるマッチングを行うために、このソフトを使用しており、センサーを使ってキャリブレーションを行う場合にも同様の事態が生ずるかは分からないが、少なくともセンサーを使わない場合は上記のようになる。
そうだとすれば、エラーを回避するためには、この[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\WinI2C-DDC]というレジストリキーそのものを削除すればよいと思うが、不用意にレジストリキーを削除するのは不安だという方は、このキーの[Start]の「値のデータ」を[3]又は[4]に変更して、「手動」又は「無効」に設定すればよいのではないだろうか。特にこのエラーが上記以外の原因で発生し、当のレジストリキーが無用であることが明らかでない場合には、無闇にそれを削除することは避けた方が無難かもしれない。ともかく、これで一応イベントビュアーにこのエラーが記録されることはない。
なお、レジストリにはもう一つ[LEGACY_WINI2C-DDC]というキーが、[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\]に存在する。こちらはこのエラーには直接関係はないようなので、敢えてキーを削除せずとも問題はないようである。もっとも、通常の「regedit.exe」(16bit)では削除しようとしても、「LEGACY_WINI2C-DDCは削除できません。削除中にエラーが発生しました。」と、「キーの削除エラー」が出て削除することはできないのである。
因みに、そのような[LEGACY_]が冠されるキー等は、「regedt32.exe」(32bit)を用いてレジストリ キーのセキュリティ設定を行ってからでなければ、削除できないようである。
「ログの名前: System
ソース: Service Control Manager
日付: 2014/02/02 13:50:13
イベント ID: 7000
タスクのカテゴリ: なし
レベル: エラー
キーワード: クラシック
ユーザー: N/A
コンピューター: PC-XXXXX
説明:
WinI2C-DDC Kernel Mode Driver サービスを、次のエラーが原因で開始できませんでした:
指定されたファイルが見つかりません。…〈以下略〉…」
というものである。
このエラーはここ1か月間記録され続けているが、PCの使用には特に不都合はないようである。とはいうものの、気持ちのよいものではないので、その原因を特定し、可能であればそのエラーを回避したい。ウェブで調べてみたが、はっきりとしたことは分からなかった。しかし、このドライバについての情報は得られた。
このWinI2C-DDC Kernel Mode Driverは、Nicomsoft社のWinI2C/DDCというベンダー向けのモニター用ツールを構成するドライバである。このWinI2C/DDCは、DDC/CIというプロトコルを介してWindows環境でモニターをコントロールするものであり、キャリブレーション等を行うソフトウェアに組み込まれるものだと、同社のウェブサイトで紹介されている。取引先として、富士通周辺機、Philips、Intel等の名が挙げられている。その本体であるddcdrv.sysは、通常のドライバと同様C:\Windows\system32\drivers内に置かれるとされる。
このDriverサービスは、「管理ツール」内の「サービス」(services.msc)には表示されていないので、レジストリを調べてみることにした。
レジストリに[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\WinI2C-DDC]というキーが存在する。その中の[ImagePath]は[\??\C:\Windows\system32\drivers\DDCDrv.sys]となっており、[Start]の「値のデータ」は[2]とされている。
【追記】:
ドライバがロードされるタイミングについては、"CurrentControlSet\Services Subkey Entries"と題されたMicrosoft Supportのknowledge baseで解説されている。
ドライバがロードされるタイミングについては、"CurrentControlSet\Services Subkey Entries"と題されたMicrosoft Supportのknowledge baseで解説されている。
CurrentControlSet\Services配下のドライバのStart値がいつドライバをロードするかを定める。
0: ブートスタートを示す。ブート(スタートアップ)ボリュームのドライバスタックの一部であり、それ故ブートローダによってロードされなければならない。
1: システムスタートを示す。カーネルの初期化時にロードされるドライバである。入出力サブシステムによってロードされる。
2: 自動スタートを示す。サービスの種類にかかわらず、全てのスタートアップに対して自動的にロードされ、開始される。
3: 手動スタートを示す。種類にかかわらず、開始可能であるが、ユーザが開始する(例えば、コントロールパネルのディバイスのアイコンを使って)まで、開始されることはない。
4: 無効を示す。いかなる情況であっても開始されない。
0: ブートスタートを示す。ブート(スタートアップ)ボリュームのドライバスタックの一部であり、それ故ブートローダによってロードされなければならない。
1: システムスタートを示す。カーネルの初期化時にロードされるドライバである。入出力サブシステムによってロードされる。
2: 自動スタートを示す。サービスの種類にかかわらず、全てのスタートアップに対して自動的にロードされ、開始される。
3: 手動スタートを示す。種類にかかわらず、開始可能であるが、ユーザが開始する(例えば、コントロールパネルのディバイスのアイコンを使って)まで、開始されることはない。
4: 無効を示す。いかなる情況であっても開始されない。
となると、[2]は「自動」を意味している。なるほど。今現在、我が機にはddcdrv.sysは存在しない。にもかかわらず、そのファイルを指定するサービスが自動で開始するように設定されている。これがためにエラーが記録されているのである。同じOSを使う他のPCには、このレジストリキーはない。
では、なぜ存在しないddcdrv.sysというファイルを指定するこのようなキーが作られたのか。
このエラーが最初に記録された日まで遡って、その日にPCに対して行ったことを調べてみた。原因は、EIZO EasyPIX Softwareというカラー・マッチングを行うソフトをVer.1.1.4からVer.2.3.2に更新したことによるものであった。
EIZO EasyPIX Software Ver.1.1.4をインストールすると、前述のレジストリキーが作成され、ddcdrv.sysもC:\Windows\system32\drivers内にインストールされる。従って、このバージョンを使っている間は、問題は生じなかった。ところが、これを、Ver.2.3.2にアップデートするために、アンインストールすると、ddcdrv.sysは削除されるが、キーだけは残るのである。改めてVer.2.3.2をインストールしても、その更新バージョンはこのキーを削除することも、ddcdrv.sysをインストールすることもないため、キーはそのままの内容で残ることになる。これがエラーの原因である。
専用のセンサーを使わずに目視によるマッチングを行うために、このソフトを使用しており、センサーを使ってキャリブレーションを行う場合にも同様の事態が生ずるかは分からないが、少なくともセンサーを使わない場合は上記のようになる。
そうだとすれば、エラーを回避するためには、この[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\WinI2C-DDC]というレジストリキーそのものを削除すればよいと思うが、不用意にレジストリキーを削除するのは不安だという方は、このキーの[Start]の「値のデータ」を[3]又は[4]に変更して、「手動」又は「無効」に設定すればよいのではないだろうか。特にこのエラーが上記以外の原因で発生し、当のレジストリキーが無用であることが明らかでない場合には、無闇にそれを削除することは避けた方が無難かもしれない。ともかく、これで一応イベントビュアーにこのエラーが記録されることはない。
なお、レジストリにはもう一つ[LEGACY_WINI2C-DDC]というキーが、[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\]に存在する。こちらはこのエラーには直接関係はないようなので、敢えてキーを削除せずとも問題はないようである。もっとも、通常の「regedit.exe」(16bit)では削除しようとしても、「LEGACY_WINI2C-DDCは削除できません。削除中にエラーが発生しました。」と、「キーの削除エラー」が出て削除することはできないのである。
因みに、そのような[LEGACY_]が冠されるキー等は、「regedt32.exe」(32bit)を用いてレジストリ キーのセキュリティ設定を行ってからでなければ、削除できないようである。