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 ドライブです。 アプリケーションでは、CreateFileの
指定されたボリュームがシステム ボリュームであるか、ページ ファイルが含まれている場合、操作は失敗します。
指定されたボリュームが別のプロセスによってロックされている場合、操作は失敗します。 別のプロセスでボリュームがロックされないようにするには、開いたらすぐにロックします。
マウント解除されたボリュームには、次のプロパティがあります。
- 開いているファイルはありません。
- オペレーティング システムはボリュームを検出します。
ボリュームのマウントを解除すると、ボリュームがしばらく消える必要がある場合に便利です。 たとえば、ボリューム ファイル システムを FAT ファイル システムから NTFS ファイル システムに変更するアプリケーションでは、次の手順を使用できます。
ボリューム ファイル システムの を変更するには
- ボリュームを開きます。
- ボリュームをロックします。
- ボリュームの書式を設定します。
- ボリュームのマウントを解除します。
- ボリュームのロックを解除します。
- ボリューム ハンドルを閉じます。
Windows 8 および Windows Server 2012 では、このコードは次のテクノロジでサポートされています。
テクノロジー | サポート |
---|---|
サーバー メッセージ ブロック (SMB) 3.0 プロトコル | いいえ |
SMB 3.0 透過的フェールオーバー (TFO) | いいえ |
SMB 3.0 とスケールアウト ファイル共有 (SO) | いいえ |
クラスター共有ボリューム ファイル システム (CsvFS) | コメントを表示する |
CsvFs では、マウント解除が発行されたノードには、通常のマウント解除シーケンスが表示されます。 他のすべてのノードで、FS は開いているすべてのファイルを無効にします。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows XP [デスクトップ アプリのみ] |
サポートされる最小サーバー | Windows Server 2003 [デスクトップ アプリのみ] |
ヘッダー | winioctl.h (Windows.h を含む) |
関連項目
CreateFile の
DeviceIoControl の
ExitThread の
GetLogicalDrives の
ボリューム管理コントロール コード を