RemoveDirectory2W 関数 (fileapi.h)

既存の空のディレクトリを削除します。 lpPathName のいずれかの部分が再解析ポイントまたはシンボリック リンクを介してリダイレクトされた場合、この関数は失敗します。

この操作をトランザクション操作として実行するには、 RemoveDirectoryTransacted 関数を使用します。

構文

BOOL RemoveDirectory2W(
  LPCWSTR         lpPathName,
  DIRECTORY_FLAGS DirectoryFlags
);

パラメーター

lpPathName

削除するディレクトリのパス。 このパスは空のディレクトリを指定する必要があり、呼び出し元プロセスはディレクトリへの削除アクセス権を持っている必要があります。

既定では、名前は MAX_PATH 文字に制限されています。 この制限を 32,767 文字のワイド文字に拡張するには、パスの先頭に "\\?\" を付けます。 詳細については、「 ファイル、パス、名前空間の名前付け」を参照してください。

ヒント

事前に "\\?\" を指定せずに 、MAX_PATH 制限を削除するようにオプトインできます。 詳細については、「 ファイル、パス、および名前空間の名前付け 」の「パスの最大長制限」セクションを参照してください。

DirectoryFlags

ディレクトリの削除方法を指定するフラグ。 このパラメーターには、次の値を組み合わせて使用できます。

価値 意味
DIRECTORY_FLAGS_DISALLOW_PATH_REDIRECTS
0x00000001
lpPathName が再解析ポイントまたはシンボリック リンクによってリダイレクトされないようにします。

戻り値

関数が成功した場合、戻り値は 0 以外です。

関数が失敗した場合、戻り値は 0 です。 拡張エラー情報を取得するには、GetLastError呼び出します。

注釈

RemoveDirectory2 関数は、ディレクトリをクローズ時に削除対象としてマークします。 そのため、ディレクトリへの最後のハンドルが閉じられるまで、ディレクトリは削除されません。

ディレクトリ内のファイルを再帰的に削除するには、 SHFileOperation 関数を使用します。

RemoveDirectory2 を使用して、ディレクトリ ジャンクションを削除できます。 ターゲット ディレクトリとその内容は正規パスを介してアクセス可能なままであるため、ターゲット ディレクトリ自体は、ターゲットとなるジャンクションを削除しても影響を受けなくなります。 このため、 lpPathName がディレクトリ ジャンクションを参照する場合、 RemoveDirectory2 は、ターゲット ディレクトリが空かどうかに関係なく、指定されたリンクを削除します。 ジャンクションの詳細については、「 ハード リンクとジャンクション」を参照してください。

POSIX 削除を使用すると、ハンドルが開いたままディレクトリが削除されます。 ディレクトリを開く CreateDirectory または CreateDirectory2 の後続の呼び出しは 、ERROR_FILE_NOT_FOUNDで失敗します。

この関数は、次のテクノロジでサポートされています。

テクノロジー サポートされています
サーバー メッセージ ブロック (SMB) 3.0 プロトコル イエス
SMB 3.0 透過的フェールオーバー (TFO) イエス
SMB 3.0 とスケールアウト ファイル共有 (SO) イエス
クラスター共有ボリューム ファイル システム (CsvFS) イエス
回復性のあるファイル システム (ReFS) イエス

注

fileapi.h ヘッダーは、RemoveDirectory2 をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 11 24H2 [デスクトップ アプリ |UWP アプリ]
サポートされる最小サーバー Windows Server 2025 [デスクトップ アプリ |UWP アプリ]
ヘッダー fileapi.h (Windows.h を含む)
図書館 Kernel32.lib
DLL Kernel32.dll

こちらもご覧ください

CreateDirectory2

ディレクトリの作成と削除

ディレクトリ管理機能の

RemoveDirectoryTransacted