コード39のエラーが出てドライバがインストールできない
最近、特電製品をお使いのお客様からデバイスドライバのインストールができないという問い合わせが増えています。
対象商品は、MITOUJTAG(Pocket JTAG Cable)と、Spartan-6、Spartan-7評価ボードです。
これらの商品はCypressのCY7C68013(通称EZ-USB FX2)を使用しているのですが、そのドライバとしては非常に古いものをベースに使用しています。
「このハードウェアのデバイスドライバーを読み込むことができません。ドライバーが構成されているか、ドライバーがない可能性があります(コード39)」
と表示されてしまいます。
この原因ですが、Windowsのセキュリティのコア分離というものが関係しているようです。詳しいことはよくわからないのですが、カーネルモードに入ってしまうと他のカーネルモードのプログラムのデータを読んだりできる(というか物理メモリ上のすべての領域に自由にアクセスできる)ので、そういうことができないようにカーネル内(?)を分離するということなのでしょう。
それに対応していない古いドライバはインストールをさせてもらえないようです。
Windows11ではデフォルトでONになっていて、Windows10では有効化することができるというものだそうです。
コード39のエラーが出てドライバがインストールできない場合は以下の手順で無効化できます。(あるいはWindows10でコード分離を有効化できます)
まず、Windowsの「更新とセキュリティ」から「Windowsセキュリティ」を開きます。そして、デバイスセキュリティを開きます。
デバイスセキュリティの中にコア分離があります。
コア分離の詳細を押して中に入ります。
このメモリ整合性をオンにすればセキュリティは高まり、オフにすれば旧式のドライバもインストールできるようになります。
Windows10で有効化できるかと思い、「再スキャン」を押してみると・・・
と怒られてしまいました。
互換性のないドライバを確認する、を押してみると、
全部、特電の製品じゃん!
これはいかんですね。
EZ-USB周りのドライバをそろそろCYUSBベースに置き換えないといけないようです。
結論を言うと、
コード39のエラーが出た場合は、上記の「メモリの整合性」をオフにすればよい
ということです。
| 固定リンク
コメント