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 つ以上を返します。

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

Remarks

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

\ / : * ? " < > |

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

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

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

Requirements

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