PathCchCanonicalizeEx 関数 (pathcch.h)
"." や ".." などのナビゲーション要素を削除して、直接の適切な形式のパスを生成することで、パスを簡略化します。
この関数は PathCchCanonicalize とは異なり、より長い最終パスを構築できる点で異なります。
この関数は、呼び出し元がスタックに格納されている返される文字列のサイズを宣言する必要がある点で、 PathAllocCanonicalize とは異なります。
この関数は PathCanonicalize とは異なり、"\"、"\?" および "\?\UNC" プレフィックスを持つパスを受け入れます。
構文
WINPATHCCHAPI HRESULT PathCchCanonicalizeEx(
[out] PWSTR pszPathOut,
[in] size_t cchPathOut,
[in] PCWSTR pszPathIn,
[in] ULONG dwFlags
);
パラメーター
[out] pszPathOut
この関数が正常に返されると、編集されたパス文字列を受け取るバッファーへのポインター。
[in] cchPathOut
pszPathOut が指すバッファーのサイズ (文字数)。
[in] pszPathIn
元のパス文字列へのポインター。 この値が NULL の場合、空の文字列を指すか、"." 要素と ".." 要素が削除されると空の文字列になります。 pszPathOut が指すバッファーに 1 つの円記号がコピーされます。
[in] dwFlags
次のフラグの 1 つまたは複数:
戻り値
この関数が成功すると、 S_OKが返されます。 それ以外の場合は、次を含むがこれらに限定されない HRESULT コードが返されます。
リターン コード | 説明 |
---|---|
|
cchPathOut 値がPATHCCH_MAX_CCHより大きい。 |
|
パス セグメントの文字数が PATHCCH_MAX_CCH 文字を超える場合、または PATHCCH_ALLOW_LONG_PATHS フラグが設定されていない場合は、標準パス セグメントの長さの制限である 256 文字を超えています。 |
|
関数は、必要なサイズのバッファーを割り当てませんでした。 |
注釈
この関数は、パスに埋め込まれた文字列 "." と "." に応答します。 ".." 文字列は、直前のパス セグメントを削除することを示します。 "." 文字列は、次のパス セグメントをスキップすることを示します。 パスのルート セグメントを削除できないことに注意してください。 パス セグメントよりも多くの ".." 文字列がある場合、関数は S_OK を返し、 pszPathOut が指すバッファーには単一の円記号 "\" が含まれます。
"" のワイルドなカード文字が前にある場合を除き、末尾のすべてのピリオドがパスから削除されます。その場合、1 つのピリオドは '' 文字の後に保持されますが、それ以外のすべての末尾のピリオドは削除されます。
結果のパスがルート ドライブ ("x:") の場合は、円記号 ("x:\") が追加されます。
この関数は、スラッシュ (/) をバック スラッシュ (\) に変換しません。 信頼されていない入力では、この関数自体を使用して、パスをサブパスまたは ID の他のパスと比較できるフォームに変換することはできません。 その機能を必要とする呼び出し元は、この関数を使用する前にバック スラッシュに変換する必要があります。
次の例は、これらの文字列の効果を示しています。
元の文字列 | 正規化された文字列 |
---|---|
C:\name_1\.\name_2\..\name_3 | C:\name_1\name_3 |
C:\name_1\..\name_2\.\name_3 | C:\name_2\name_3 |
C:\name_1\name_2\.\name_3\..\name_4 | C:\name_1\name_2\name_4 |
C:\name_1\.\name_2\.\name_3\..\name_4\.. | C:\name_1\name_2 |
C:\name_1\*... | C:\name_1\*。 |
C:\。。 | C:\ |
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8 [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2012 [デスクトップ アプリ |UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | pathcch.h |
Library | Pathcch.lib |