こんにちは、阿久津です。いつもどおりMicrosoftサポートの更新情報をつれづれと眺めていると、興味深いKB(Knowledge Base:ナレッジベース)が掲載されていました。それが「Windows 7またはWindows Server 2008 R2でUSB記憶装置の最大転送サイズを大きくする更新プログラム」という文書。

USBマスストレージクラスドライバーである「Usbstor.sys」が使用する最大転送サイズを64KBから2MBに拡大可能にするというもの。主にUSBストレージを対象にした改善で、筆者の記憶が確かなら2011年8月頃に公開された修正プログラムです。最初に見かけた時は「後で確認しよう」とメモを残していたものの、すっかり忘却の彼方に追いやられていました。このたび文書リビジョンが更新されたことで再び目にした次第です。

エンドユーザー的にも有益な修正プログラムですが、バグフィックスという訳ではないため、一般に広まっている修正プログラムではありません。しかし、一部のハードウェアベンダーが自社推奨修正プログラムとして配布していることもあるでしょう。

ただし、KB2581464による修正プログラムは適用するだけではなく、対象となるUSBストレージのレジストリキーにDWROD値「MaximumTransferLength」を作成し、最大転送サイズを直接指定しなければなりません。そこで今回は修正プログラムを適用した環境で、USBストレージの最大転送サイズを拡大させるチューニングをお届けします。

1.KB2581464を適用します。ただし、ここでは再起動を実行しません。
2.対象となるUSBストレージデバイスのベンダーIDおよびプロダクトIDを確認します。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbstorキーを開きます。
4.ステップ02で確認したベンダーID&プロダクトIDを名前として新しいキーを作成します。
5.ステップ04で作成したキーを開き、DWORD値「MaximumTransferLength」を作成します。
6.値のデータを「1fffe0」に変更します。
7.レジストリエディターを終了し、コンピューターを再起動します。

これでチューニングが終了しました(図01~24)。

図01 [Win]+[R]キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「appwiz.cpl」と入力して<OK>ボタンをクリックします

図02 ナビゲーションウィンドウの「プログラムのアンインストール」をクリックし、検索ボックスに「KB2581464」と入力します。修正プログラムが表示されない場合は、続く手順を実行してください。表示された場合は図08に進みます

図03 「この技術情報に対応する修正プログラムのダウンロードのリスト」と書かれたリンクをクリックすると現れる使用条件を確認し、問題がなければ<同意する>ボタンをクリックします

図04 ページが切り替わり、修正プログラムのダウンロードが可能になります。自動的に使用環境に合わせた修正プログラムが列挙されますので、チェックボックスをクリックしてください

図05 修正プログラムのダウンロードURLを送る電子メールアドレスを二カ所に入力し、ロボット避けのキャプチャに表示されている英文を入力します。読み取れない場合はリロードボタンをクリックして更新させましょう。最後に<リクエストを送信する>ボタンをクリックします

図06 これで修正プログラムの手配が完了しました。Webページは閉じても構いません

図07 しばらくすると指定した電子メールアドレスに、ダウンロードURLが記載されています。こちらをクリックしてファイルをダウンロードしてください

図08 今回は64ビット版Windows 7上で操作しているため、ダウンロードファイルは「435480_intl_x64_zip.exe」となります。同ファイルをダブルクリックし、<Continue>ボタンをクリックしてください

図09 次に展開先の選択をうながされますので、<...>ボタンをクリックしてデスクトップなどを指定しましょう。後は<OK>ボタンをクリックします

図10 これでファイルの展開が完了しました。<OK>ボタンをクリックしてください

図11 展開した「Windows6.1-KB2581464-x64.msu」をダブルクリックし、インストーラーの<はい>ボタンをクリックします

図12 修正プログラムのインストールが完了しましたら、<閉じる>ボタンをクリックします

図13 [Win]+[R]キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「devmgmt.msc」と入力して<OK>ボタンをクリックします

図14 デバイスマネージャーが起動しましたら、「ユニバーサルシリアルバスコントローラー」を展開し、「USB大容量記憶装置」をダブルクリックします

図15 プロパティダイアログの<詳細>タブにあるドロップダウンリストから「ハードウェアID」を確認します。画面の例ではベンダーIDが「152D」、プロダクトIDが「0539」であることが確認できました

図16 [Win]+[R]キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「regedit」と入力して<OK>ボタンをクリックします

図17 レジストリエディターが起動したら、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbstorキーをたどって開きます

図18 usbstorキーを右クリックし、メニューから<新規>→<キー>とクリックします

図19 キー名を「新しいキー #1」から図15で確認した「152D0539」に変更します

図20  右ペインの何もないところを右クリックし、メニューから<新規>→<DWORD値>とクリックします

図21 値名を「新しい値 #1」から「MaximumTransferLength」に変更します

図22 DWORD値「MaximumTransferLength」をダブルクリックし、値のデータを「1fffe0」に変更して<OK>ボタンをクリックします

早速結果を確認してみましょう。転送速度を測る方法は色々とありますが、ここではシンプルにエクスプローラーを使用します。なお、テスト環境は数世代前のバルクHDDをUSBケースに取り付けたUSB-HDDをUSB 2.0ポートを備えるIntel Core i 7のノートPCに接続。Windows 7 Service Pack 1上で10GBのファイルをコピーに必要とした時間を計りました。なお、USB-HDDの書き込みキャッシュは初期状態から変更していません。

エクスプローラーのコピーダイアログに表示される「スピード」はコピー時間の平均値を表示するため、必ずしも信頼に値しません。それでもチューニング前とチューニング後の数値には明確な開きがありました。肝心のコピーに要する所要時間もチューニング前は約八分でしたが、チューニング後は約六分半という結果(図25~26)。

図23 操作を終えたら<×>ボタンをクリックしてレジストリエディターを終了させます

図24 <スタート>メニューの電源ボタンから<再起動>をクリックしてコンピューターを再起動します

図25 チューニング前のコピーダイアログ。ファイル転送の進捗状況が進むほど平均スピードは低下し、最終的には20MB/sを切りました

あくまでも本チューニングは、USBストレージの最大転送サイズを拡大させるものですから、USBチップやUSBストレージの能力を超すことはできません。それだけに、より高速なUSBストレージを用意しますと、より面白い結果を確認できるでしょう。なお、本チューニングによるトラブルが発生する場合は、ステップ04で作成したベンダーID&プロダクトID名を付けたキーを削除し、コンピューターを再起動してください。

それでは、また次号でお会いしましょう。

阿久津良和(Cactus)