次の方法で共有


RemoveDirectoryA 関数 (fileapi.h)

既存の空のディレクトリを削除します。

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

構文

BOOL RemoveDirectoryA(
  [in] LPCSTR lpPathName
);

パラメーター

[in] lpPathName

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

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

先端

Windows 10 バージョン 1607 以降では、事前に "\\?\" なしで MAX_PATH の制限を削除することをオプトインできます。 詳細については、「名前付けファイル、パス、および名前空間の」の「パスの最大長制限」セクションを参照してください。

戻り値

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

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

備考

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

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

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

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

Windows 8 および Windows Server 2012 では、この関数は次のテクノロジでサポートされています。

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

手記

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

必要条件

要件 価値
サポートされる最小クライアント Windows XP [デスクトップ アプリ |UWP アプリ]
サポートされる最小サーバー Windows Server 2003 [デスクトップ アプリ |UWP アプリ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー fileapi.h (Windows.h を含む)
ライブラリ Kernel32.lib
DLL Kernel32.dll

関連項目

CreateDirectory の

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

ディレクトリ管理機能の

RemoveDirectoryTransacted の