FSCTL_DISMOUNT_VOLUME IOCTL (winioctl.h)

ボリュームが現在使用されているかどうかに関係なく、ボリュームのマウントを解除します。 詳細については、「解説」を参照してください。

この操作を実行するには、次のパラメーターを使用して DeviceIoControl 関数を呼び出します。

C++
BOOL DeviceIoControl(
  (HANDLE) hDevice,            // handle to a volume
  (DWORD) FSCTL_DISMOUNT_VOLUME,   // dwIoControlCodeNULL,                        // lpInBuffer0,                           // nInBufferSizeNULL,                        // lpOutBuffer0,                           // nOutBufferSize(LPDWORD) lpBytesReturned,   // number of bytes returned
  (LPOVERLAPPED) lpOverlapped  // OVERLAPPED structure
);

注釈

FSCTL_DISMOUNT_VOLUME制御コードは、他のプロセスがボリュームを使用しているかどうかに関係なく、ボリュームのマウント解除を試みます。これにより、そのプロセスがボリュームにロックを保持していない場合、それらのプロセスに予期しない結果が生じる可能性があります。 ボリュームのロックの詳細については、「 FSCTL_LOCK_VOLUME」を参照してください。

DeviceIoControl に渡される hDevice ハンドルは、直接アクセス用に開かれたボリュームへのハンドルである必要があります。 ボリューム ハンドルを取得するには、 lpFileName パラメーターを次の形式の文字列に設定して CreateFile を呼び出します。

\.\X:

X は、ハード ドライブパーティション文字、フロッピーディスクドライブ、または CD-ROM ドライブです。 アプリケーションでは、CreateFiledwShareMode パラメーターにFILE_SHARE_READフラグとFILE_SHARE_WRITE フラグも指定する必要があります。

指定されたボリュームがシステム ボリュームであるか、ページ ファイルが含まれている場合、操作は失敗します。

指定されたボリュームが別のプロセスによってロックされている場合、操作は失敗します。 別のプロセスでボリュームがロックされないようにするには、開いたらすぐにロックします。

マウント解除されたボリュームには、次のプロパティがあります。

  • 開いているファイルはありません。
  • オペレーティング システムによってボリュームが検出されます。
オペレーティング システムは、マウントされていないボリュームへのアクセスが試行されるとすぐにマウント解除を試みます。 たとえば、 GetLogicalDrives を呼び出すと、オペレーティング システムがトリガーされ、マウントされていないボリュームがマウントされます。

ボリュームのマウントを解除すると、ボリュームがしばらくの間消える必要がある場合に便利です。 たとえば、ボリューム ファイル システムを FAT ファイル システムから NTFS ファイル システムに変更するアプリケーションでは、次の手順を使用できます。

ボリューム ファイル システムを変更するには

  1. ボリュームを開きます。
  2. ボリュームをロックします。
  3. ボリュームをフォーマットする。
  4. ボリュームのマウントを解除します。
  5. ボリュームのロックを解除します。
  6. ボリューム ハンドルを閉じます。
マウント解除操作を実行すると、FAT ファイル システムの認識からボリュームが削除されます。 オペレーティング システムがボリュームをマウントすると、NTFS ファイル システム ボリュームとして表示されます。

Windows 8とWindows Server 2012では、このコードは次のテクノロジでサポートされています。

テクノロジ サポートされています
サーバー メッセージ ブロック (SMB) 3.0 プロトコル いいえ
SMB 3.0 Transparent Failover (TFO) いいえ
スケールアウト ファイル共有 (SO) を使う SMB 3.0 いいえ
クラスターの共有ボリューム ファイル システム (CsvFS) コメントを表示する
 

CsvFs では、マウント解除が発行されたノードには、通常のマウント解除シーケンスが表示されます。 他のすべてのノードでは、FS は開いているすべてのファイルを無効にします。

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
Header winioctl.h (Windows.h を含む)

こちらもご覧ください

CreateFile

DeviceIoControl

ExitThread

FSCTL_LOCK_VOLUME

GetLogicalDrives

ボリューム管理の制御コード