USBメモリの「安全な取り外し」は、今も必要なのか? ── 「クイック取り外し」と書き込みキャッシュから考える
· 小村 豪 · Windows, USB, ストレージ, トラブルシューティング
更新履歴(初版のみ・2026年09月12日公開)
- 初版公開
USBメモリへ資料をコピーした。画面には「完了」と出た。それなのに、抜く前にはもう一度「安全な取り外し」をするように言われる。
終わったはずなのに、何をもう一度終わらせるのでしょうか。
アプリがWindowsへ渡したデータは、まだPC側で書き込みを待っていることがあります。資料一つがUSBへ届くまでを追ってみましょう。1
Windows 11につないだUSBストレージを想定します。スマートフォンのファイル転送などは対象外です。
1. USBに書く前に、PCが預かる
説明のため、資料をA・B・Cの三つに分けます。アプリはこれを順にWindowsへ渡し、USBへ書くように頼みます。
毎回USBへの書き込みを待っていたら、アプリも待たされます。そこでWindowsは、PCのメモリに受け取ったところで先に返事をし、USBへは後で書くことができます。アプリを待たせにくくし、小さな書き込みをまとめて扱うための仕組みです。この一時的な置き場が、書き込みキャッシュです。12
WindowsはA・B・Cを受け取ったけれど、USBへ書けたのはA・Bまで、という瞬間を考えます。CはPC側で順番を待っています。
flowchart TB
accTitle: 同じ資料でもPCが受け取った範囲とUSBの記録は違う
accDescr: A・B・CをWindowsが受け取り、A・BはUSBに記録したものの、CはまだPC側のキャッシュで書き込みを待っている瞬間を示します。
A["WindowsはA・B・Cを受け取り済み"]
A --> P["PCのメモリ:Cが書き込み待ち"]
A --> U["USBの記録:A・Bまで"]
図1: アプリは三つとも渡しています。それでも、この瞬間のUSBにはCがまだありません。
ここで抜くと、PCに残ったCはUSBへ送れません。持ち出した資料の一部が欠けてしまいます。
アプリは全部渡した。でも、USBにはまだ全部入っていない。 書き込みを後回しにする仕組みでは、この二つが同時に起こり得るのです。
完了表示のタイミングはアプリや設定によります。この例は、エクスプローラーの完了表示後に必ず書き込みが残る、という説明ではありません。2
2. 抜く前に、預かった分を書き終える
では、Cを置き去りにせずにUSBを抜くにはどうすればよいでしょうか。
「安全な取り外し」は、Windowsへこの機器を外すので、残った書き込みを済ませてほしいと知らせる操作です。キャッシュに残る操作を完了させることが、その役割の一つです。3
先ほどの資料なら、PC側に残っていたCを書き出し、USBにもA・B・Cがそろうのを待つことになります。
flowchart TB
accTitle: 同じ書き込み待ちのCが取り外し方でどう変わるか
accDescr: CがPC側に残った状態で接続を切るとUSBはA・Bまでですが、接続中にCを書き出せばUSBにもA・B・Cがそろいます。
P["PC側に書き込み待ちのC"]
P -->|"Cを書く前に抜く"| L["USB:A・Bだけ"]
P -->|"接続中にCを書き出す"| R["USB:A・B・Cがそろう"]
図2: 「安全な取り外し」で待ちたいのは時間の経過ではなく、残った書き込みの完了です。
「少し待ってから抜く」だけでは、残りがなくなったか分かりません。取り外し操作ならWindowsに終了処理を頼み、取り外し可能の通知を確認できます。4
Windowsの「高パフォーマンス」は、このキャッシュを使える方針です。書き込みをためて効率を上げる代わりに、安全な取り外しをしてから抜く必要があります。3
3. 後回しにしない「クイック取り外し」
「抜く前に残りを書き出す必要があるなら、そもそもPC側に残さなければよいのでは」と思うかもしれません。
その方針が、「クイック取り外し」です。Windowsは対象機器へのディスク書き込みをキャッシュせず、取り外し操作を省略できるようにします。先ほどのCをPC側に残し、後で書く方式を取らないわけです。3
USBへ書く仕事は残ります。ためて効率を上げる余地が減り、性能が下がる場合はありますが、その代わり取り外しやすくなります。3
flowchart TB
accTitle: 書き込みを後回しにする方針としない方針
accDescr: 高パフォーマンスではPC側に書き込み待ちを残せる代わりに取り外し時の完了確認が必要で、クイック取り外しではWindowsがそのように書き込みを後回しにしません。
H["高パフォーマンス"] --> HC["PCで書き込みを預かれる"]
HC --> HE["抜く前に残りを書き出す"]
Q["クイック取り外し"] --> QC["書き込みを後回しにしない"]
QC --> QE["作業後の取り外し操作を省ける"]
図3: USBへ書く仕事が消えるのではなく、後回しにするかどうかが変わります。
Windows 10 バージョン1809以降、既定はクイック取り外しです。「今はそのまま抜いてよい」という話には、この根拠があります。ただし、機器ごとに設定を変更できます。3
つまり、後回しにした分を、抜く前に終わらせるか。そもそも後回しにしないか。 「安全な取り外しが必要」「不要」という二つの説明は、この設定の違いから来ています。
クイック取り外しでも、進行中のコピーや保存を中断してよいわけではありません。作業の完了を待ち、未保存の編集内容は先に保存してください。5
4. 自分のUSBは、どちらの設定か
エクスプローラーで、対象USBの名前とドライブ文字を確かめます。
スタートボタンを右クリックして「ディスクの管理」を開き、下側の一覧で対応する機器のラベルを右クリックします。「プロパティ」→「ポリシー」で、二つのうちどちらが選ばれているかを確認できます。3
「ポリシー」が見えなければ、「ハードウェア」で該当ドライブを選び、さらに「プロパティ」を開く配置もあります。確認だけなら設定は変えません。会社のPCで操作できなければ、管理者へ確認します。3
設定が分からなければ、安全な取り外しを使うのが分かりやすい運用です。保存やコピーなどを終え、USBを使うアプリを閉じます。通知領域の「ハードウェアの安全な取り外しとメディアの取り出し」で対象を選び、取り外し可能の通知が出てから抜きます。アイコンが隠れていれば、隠れたアイコンの一覧を開いてください。4
複数の機器がある場合は、選んだ名前と実際に抜くUSBを照合します。
5. コピーは終わったのに「使用中」になるのは?
資料のA・B・CはすべてUSBへ書けました。しかし、内容を確認したアプリが資料を開いたままなら、次の操作でまた読むことも書き換えることもできます。
取り外し処理は、このような利用を終えられるかも確認します。アプリがファイルを使うための参照であるハンドルが残ると、読み書きが止まっていても、取り外しを拒否する場合があります。67
flowchart TB
accTitle: 書き込み済みの資料にも利用中のアプリがつながっている
accDescr: USBにA・B・Cがすべて記録されていても、アプリが資料へのハンドルを持ち続けていると、機器の取り外しを妨げる場合があります。
A["資料を開いたままのアプリ"]
A -->|"ハンドルを保持"| U["USB上の資料:A・B・C"]
A -.-> N["読み書きが止まっても参照は残る"]
図4: データが足りないのではなく、機器をまだ使っていることが、取り外せない理由になる場合です。
この場合は待つだけでなく、必要な保存をしてアプリを閉じます。対象USBを表示しているエクスプローラーも閉じ、取り外しをやり直します。
心当たりがなければ、Process ExplorerでUSB上のファイル名やフォルダー名を検索し、開いているプロセスを調べます。見つかったハンドルの強制クローズは、アプリやシステムを不安定にするため避けます。アプリを通常の手順で終了し、業務アプリやサービスなら担当者へ確認してください。87
これは原因の一例です。詳しい調査方法はProcess Explorer・Handleの使い方を参照してください。
6. 補足:アプリを作る側の「保存完了」
アプリの「保存完了」は、Windowsへ渡しただけで出すのか、必要な書き出しの結果を確認して出すのかを意識します。
Win32のFlushFileBuffersは、指定ファイルのバッファ済みデータを書き出すAPIです。通常のファイルハンドルへの呼び出しは、別アプリの未保存文書を保存したり、USB全体の利用を終えたりする操作ではありません。2
Windowsのキャッシュの前後にも、アプリ内の未保存データや機器内部のキャッシュがあります。クイック取り外しは、これらも全部なくす設定ではありません。9
flowchart TB
accTitle: データを預かる場所には別々の管理者がいる
accDescr: アプリ内の未保存データ、Windows側のファイルキャッシュ、機器側のキャッシュを、データが通る順番で示します。
A["アプリ内:未保存の変更"] -->|"保存処理"| W["Windows側:ファイルキャッシュ"]
W -->|"機器への書き込み"| D["機器側:内部キャッシュ・記録媒体"]
図5: 各層にデータが残るかは設定や実装によります。一つの層の設定を、ほかの層の完了確認と取り違えないようにします。
取り外し通知を扱うアプリでは、デバイスハンドルを閉じるなどの後片付けも必要です。10 APIの使い分けはキャッシュマネージャーとWriteFileの解説で扱います。
まとめ
USBへ持ち出せるのは、USBに書き終えたデータです。 設定が分からなければ、作業を終えて安全な取り外しを使う。大切な資料は、USB以外にもコピーを残しておきましょう。
図の実線は常に成り立つ関係、破線は条件付きの関係です(成立条件は詳細ページの各関係の説明に記載)。関係すべての一覧(全6件、根拠・確度つき)と主要概念の定義は知識マップ詳細ページにまとめています。データ: JSON-LD / Turtle
関連記事
参考リンク
-
Microsoft Learn, File Caching. メモリ上のファイルキャッシュと遅延書き込み、フラッシュの役割。 ↩ ↩2
-
Microsoft Learn, FlushFileBuffers function. 通常の書き込みとバッファ済みデータの書き出し。ファイルのフラッシュと機器の取り外しは区別する。 ↩ ↩2 ↩3
-
Microsoft Learn, Manage default media removal policy. クイック取り外しと高パフォーマンスの違い、既定値の変更、機器ごとの設定確認。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7
-
Microsoft Support, Safely remove hardware in Windows. 通知領域からの取り外し操作と、取り外し可能の通知。 ↩ ↩2
-
Microsoft Learn, Handling an IRP_MN_SURPRISE_REMOVAL Request. 予期しない機器切断に伴うI/Oの失敗と後片付け。 ↩
-
Microsoft Learn, Handling an IRP_MN_QUERY_REMOVE_DEVICE Request. 取り外し前の確認、開いたハンドル、ファイルシステムやアプリの応答。 ↩
-
Microsoft Learn, Handle. 開いたファイル参照の調査と、ハンドルの強制クローズに関する警告。 ↩ ↩2
-
Microsoft Learn, Process Explorer. 特定のファイルやディレクトリを開いているプロセスの検索。 ↩
-
Microsoft Learn, File Buffering. Windows側のファイルバッファとハードウェア側のキャッシュの区別。 ↩
-
Microsoft Learn, DBT_DEVICEQUERYREMOVE event. アプリによる取り外しへの準備とデバイスハンドルの終了。 ↩
関連する記事
同じタグを共有する最新の記事です。さらに近い話題で知識を深められます。
CPU使用率は低いのに音が途切れるのはなぜ? ── バッファと締め切りから考える
CPU使用率は低いのに音がプツプツ途切れる。その理由を、音を少し先までためるバッファと補充の締め切りから説明します。バッファを増やすと遅延が増える理由を理解した後、再現条件の比較と音切れの瞬間の調べ方へ進みます。
回線は速いのにRDPが重いのはなぜ? ── 入力・描画・通信を分けて調べる
回線の速度測定では速いのに、リモートデスクトップの入力やスクロールが遅い。その理由を操作の往復と画面転送から説明し、症状別の比較、接続先と手元の負荷、性能カウンターの読み方へ順に進みます。
Get-WinEventでイベントログを実務的に調べる ── 絞り込みの速さが調査時間を決める
Windowsのイベントログ調査をPowerShellで効率化する方法をまとめます。Where-Objectで絞ると遅い理由、FilterHashtableとXPathの使い分け、再起動やログオン・アプリ異常終了の調査レシピ、複数台からの収集までを解説します。
レジストリの32bit/64bitリダイレクトと仮想化の落とし穴 ── Wow6432Nodeと「書いたはずの値がない」問題
32bitアプリのHKLM\Software書き込みがWow6432Nodeへリダイレクトされる仕組み、UAC仮想化でVirtualStoreに転送される条件、COM登録がbitnessで分かれる実害、RegistryViewやreg.exe /reg:64での正しい読み書...
タスクスケジューラのタスクが実行されない・0x1で終わる ── 原因の切り分けと安全な運用設計
Windowsタスクスケジューラの実行アカウントとログオン種別、0x1で終わる典型原因、履歴の有効化、多重起動防止、PowerShellの正しい呼び出し方まで、定期実行を運用に乗せる設計指針を整理します。
関連トピック
このテーマと近いトピックページです。記事を起点に、関連するサービスや他の記事へ進めます。
Windows技術トピック
Windows 開発、不具合調査、既存資産活用の技術トピックをまとめた入口です。
このテーマがつながるサービス
この記事は次のサービスページにつながります。近い入口からご覧ください。
Windowsアプリ開発
業務アプリ、装置連携、通信ツールなどの Windows ソフト開発を支援します。
よくある質問
この記事のテーマについて、相談時によくある質問をまとめています。
- Windows 11でもUSBメモリの安全な取り外しは必要ですか?
- 対象機器の取り外しポリシーによります。「クイック取り外し」は操作を省略できる設計ですが、「高パフォーマンス」では安全な取り外しが必要です。設定が分からない場合は、保存やコピーを終え、利用中のアプリを閉じてから取り外し操作を行う方法が分かりやすい運用です。
- クイック取り外しなら、コピー中に抜いてもよいですか?
- いいえ。クイック取り外しは、Windowsがディスクへの書き込みをキャッシュして後回しにしないためのポリシーです。まだ送っていないデータを完成させる機能ではなく、進行中のコピーや保存を中断してよいという意味ではありません。
- クイック取り外しになっているか、どこで確認しますか?
- エクスプローラーで対象USBのドライブ文字と名前を確認し、「ディスクの管理」で対応する機器のプロパティを開き、「ポリシー」を確認します。タブが見えない場合は「ハードウェア」から該当機器を選んでプロパティを開きます。表示は環境によって異なるため、確認のために設定を変更する必要はありません。
- 書き込みが終わっているのに「使用中」と表示されるのはなぜですか?
- アプリがファイルやフォルダーを開いたままなら、通信が一時的に止まっていても機器を使い終えたとは限りません。まず対象のファイルを保存して閉じ、コピーやバックアップの終了を確認してから再度取り外します。必要ならProcess Explorerで開いているプロセスを調べますが、ハンドルの強制終了は避けます。
- 安全な取り外しをすれば、保存し忘れた文書もUSBへ保存されますか?
- 保存されません。安全な取り外しはアプリの「保存」の代わりではありません。先に文書を保存し、そのアプリが処理の完了を示したことを確認してください。重要なデータはUSBメモリだけに置かず、別の場所にもコピーを残します。