次の方法で共有


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の dwShareMode パラメーターに 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 透過的フェールオーバー (TFO) いいえ
SMB 3.0 とスケールアウト ファイル共有 (SO) いいえ
クラスター共有ボリューム ファイル システム (CsvFS) コメントを表示する
 

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

必要条件

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

関連項目

CreateFile の

DeviceIoControl の

ExitThread の

FSCTL_LOCK_VOLUME

GetLogicalDrives の

ボリューム管理コントロール コード を する