2013年12月24日火曜日

リムーバブルではないUSBメモリへの対応

 Flash Drive Levelingは、もちろん自分でも利用しています。用途は主に開発用です。ソースコードを格納し、ビルド・ディレクトリとして利用しています。自画自賛になってしまいますが、なかなか快適に使えています。他にVMWAREの仮想マシン用途にも使用しています。こちらもランダム・アクセスが多いせいか、HDDに比べてストレスなく利用できています。


 ところで、USBメモリをパソコンに挿した姿は、かなり不格好と思います。マウスのケーブルなど、いろんなものにひっかかったりもします。挿しっぱなしで使うには、ちょっと問題アリなのです。



 そこで、超小型のUSBメモリを導入してみました(左の写真)。出っ張りが小さいのが最大の特徴です。隣のUSBポートへの物理的干渉もありません。ただし、出っ張りが小さいため、指先でかなり強くつまんで引っ張りださないと抜けません。これは挿しっぱなしで使うのに適した商品ですね。


 使ってみて驚いたのは、ハードディスクドライブとして認識されるということです。冷静に考えてみれば、外付けのUSB-HDDも同じように表示されるので、驚くほどのことでもないのですが、USBメモリ=リムーバブルと勝手に思い込んでいました。

 ここで困ったことに、Flash Drive Levelingはリムーバブルなドライブしか対象としないため、この超小型USBメモリ(SanDisk Cruzer Fit)は未対応ということになってしまいました。そこで、V1.1.0ではリムーバブルでないドライブにも対応することができるように改良しました。前置きが長くなりましたが、以下に設定方法等を説明します。

対応の方針
  • リムーバブルでないドライブは対象としない原則は変えない。
  • 指定されたドライブについては、リムーバブルでなくても対象とする。
  • ドライブの指定は、ハードウェアIDのパターンマッチによって行う。
  • 「取り出し」メニューがないので、シャットダウンしてからUSBメモリを抜く。
設定方法

レジストリにハードウェアIDを登録することによって設定します。
警告 : レジストリ エディタの使い方を誤ると、深刻な問題が発生することがあります。
レジストリエディタで以下のキーを開きます。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\fdlvling\Parameters
HardwareIdAllowAlwaysに、指定するドライブのハードウェアIDを追加します。ハードウェアIDの一部を省略するにはアスタリスク(*)をワイルドカードとして使用します。なお、SanDisk Cruzerについては設定済みです。
設定後に新たに接続したドライブに対して、変更が有効になります。

ハードウェアIDの確認方法

対象として指定するドライブのハードウェアIDを確認するには、デバイスのプロパティを開き、詳細タブのハードウェアIDを選択して、ハードウェアIDの一覧を表示します。この一覧のうちGenDisk等のハードウェアIDは他のデバイスと区別できませんので適しません。そのデバイスを十分に特定できる文字列を使って指定してください。


なお、デバイスのプロパティは、ドライブを右クリック→プロパティ→ハードウェアタブ→対象のドライブをダブルクリックで開くことができます。

仕様の詳細

ドライバ・パラメータのHardwareIdで始まる名前の値の仕様について説明します。
  • HardwareIdAllowAlways
    強制的に対象とするドライブを指定します。ここで指定されたドライブはリムーバブルでなくても対象となります。HardwareIdDenyの指定よりも優先します。
  • HardwareIdDeny
    除外するドライブを指定します。デフォルトでIDEとSCSIバスに接続されるデバイスを指定してあります。これは内蔵ディスクを除外することを目的としたものです。通常はデフォルトの設定を削除しないでください。
    • HardwareIdAllow
      対象とするドライブを指定します。ここで指定されても、リムーバブルでないと対象となりません。またHardwareIdDenyで指定されている場合も対象となりません。
    • HardwareIdToBeFixed
      リムーバブルなドライブを強制的にリムーバブルでないドライブにします。
    • HardwareIdToBeRemovable
      リムーバブルでないドライブを強制的にリムーバブルなドライブにします。

    0 件のコメント:

    コメントを投稿