PathCleanupSpec 関数 (shlobj_core.h)

[PathCleanupSpec は、[要件] セクションで指定されたオペレーティング システムで使用できます。 これは、以降のバージョンで変更または使用できない可能性があります。

ファイル名またはディレクトリ名から無効な文字を削除します。 長いファイル名をサポートしていないドライブに 8.3 ファイル名形式を適用します。

構文

int PathCleanupSpec(
  [in, optional] PCWSTR pszDir,
  [in, out]      PWSTR  pszSpec
);

パラメーター

[in, optional] pszDir

種類: PCWSTR

pszSpec という名前のファイルまたはディレクトリを含むディレクトリの完全修飾パスを含む null で終わるバッファーへのポインター。 パスは、終端の null 文字を含め、長さがMAX_PATH文字を超えてはなりません。 このパスは変更されません。

この値には NULL を指定できます。

[in, out] pszSpec

種類: PWSTR

消去するファイル名またはディレクトリ名を含む null で終わるバッファーへのポインター。 ファイルの場合は、ファイルの拡張子を含めます。 '' は無効な文字と見なされ、削除されるため、このバッファーには複数のディレクトリの深いパスを含めることはできません。

終了時に、バッファーには、クリーンアップされた名前を含む null で終わる文字列が含まれます。

バッファー オーバーランの可能性を回避するには、このバッファーの長さを少なくともMAX_PATH文字にする必要があります。

戻り値

型: int

次の値のうち 1 つ以上を返します。

リターン コード 説明
PCS_REPLACEDCHAR
1 つ以上の無効な文字が置き換えられました。
PCS_REMOVEDCHAR
1 つ以上の無効な文字を削除しました。
PCS_TRUNCATED
返されたパスは切り捨てられます。
PCS_PATHTOOLONG
pszDir で指定された入力パスが長すぎて pszSpec から有効なファイル名を作成できないため、関数は失敗しました。 このフラグが返されると、常に PCS_FATAL フラグが伴います。
PCS_FATAL
クリーンアップされたパスが有効なファイル名ではありません。 このフラグは、常にPCS_PATHTOOLONGと組み合わせて返されます。

注釈

以下は、すべての名前で無効な文字と見なされます。

\ / : * ? " < > |

制御文字も無効と見なされます。 長いファイル名がサポートされていない場合は、セミコロン (;)とコンマ (,) 文字も無効です。

pszDir でという名前のドライブがチェックされ、そのファイル システムで長いファイル名がサポートされているかどうかを確認します。 そうでない場合、 pszSpec の名前は 8.3 形式に切り捨てられ、PCS_TRUNCATED値が返されます。 pszDirNULL の場合、Windows がインストールされているドライブを使用して、長いファイル名のサポートが決定されます。

完全なパス ( pszDir のパス内の文字数と pszSpec のクリーンされた名前の文字数) が MAX_PATH – 1 (終端の null 文字を考慮) を超える場合、関数はPCS_PATHTOOLONGを返します。

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー shlobj_core.h (Shlobj.h を含む)
Library Shell32.lib
[DLL] Shell32.dll (バージョン 5.0 以降)