PathAllocCanonicalize 関数 (pathcch.h)
この記事の内容
パス文字列を正規形式に変換します。
この関数は、PathCchCanonicalize とは異なり、PathCchCanonicalizeEx は、ヒープ上の結果を返します。 これは、呼び出し元が返される文字列のサイズを宣言する必要がないことを意味し、スタックの使用を減らします。
この関数は、"\"、"\?" および "\?\UNC" プレフィックスを持つパスを受け入れるという点で、PathCanonicalize とは異なります。
構文
WINPATHCCHAPI HRESULT PathAllocCanonicalize(
[in] PCWSTR pszPathIn,
[in] ULONG dwFlags,
[out] PWSTR *ppszPathOut
);
パラメーター
[in] pszPathIn
元の文字列を含むバッファーへのポインター。 この値は NULL できません。
[in] dwFlags
次のフラグの 1 つ以上:
価値
意味
PATHCCH_NONE
0x0000000
MAX_PATH よりも長い \\?\ パス (つまり、長いパス) の構築を許可しないでください。
PATHCCH_ALLOW_LONG_PATHS
0x00000001
MAX_PATH よりも長い \\?\ パスの構築を許可します。
PATHCCH_FORCE_ENABLE_LONG_NAME_PROCESS
0x00000002
プロセスの長い名前が有効な状態とは関係なく、呼び出し元を長いパスが有効な状態として API に強制的に処理します。 このオプションは、PATHCCH_ALLOW_LONG_PATHS が指定されている場合にのみ使用でき、PATHCCH_FORCE_DISABLE_LONG_NAME_PROCESS では使用できません。
注 この値は、Windows 10 バージョン 1703 以降で使用できます。
PATHCCH_FORCE_DISABLE_LONG_NAME_PROCESS
0x00000004
プロセスの長い名前が有効な状態とは無関係に、呼び出し元を長いパスが無効として扱うように API に強制します。 このオプションは、PATHCCH_ALLOW_LONG_PATHS が指定されている場合にのみ使用でき、PATHCCH_FORCE_ENABLE_LONG_NAME_PROCESS で使用することはできません。
注 この値は、Windows 10 バージョン 1703 以降で使用できます。
PATHCCH_DO_NOT_NORMALIZE_SEGMENTS
0x00000008
末尾のドットとスペースの削除を含むパス セグメントの正規化を無効にします。 これにより、win32 パス正規化によってブロックされるパスへのアクセスが可能になります。
注 この値は、Windows 10 バージョン 1703 以降で使用できます。
PATHCCH_ENSURE_IS_EXTENDED_LENGTH_PATH
0x00000010
入力パスを拡張長の DOS デバイス パス フォーム (\\?\ プレフィックス付き) に変換します (まだその形式でない場合)。 これにより、Win32 正規化ルール (末尾のドットとスペースを削除できる) とパスの長さの制限により、アドレス指定できないパスへのアクセスが可能になります。 このオプションは、PATHCCH_DO_NOT_NORMALIZE_SEGMENTS と同じ動作を意味します。
注 この値は、Windows 10 バージョン 1703 以降で使用できます。
PATHCCH_ENSURE_TRAILING_SLASH
0x00000020
パスを結合または正規化するときは、末尾に円記号があることを確認します。
注 この値は、Windows 10 バージョン 1703 以降で使用できます。
PATHCCH_CANONICALIZE_SLASHES
0x00000040
スラッシュをバック スラッシュに変換し、複数のスラッシュを折りたたみます。
注 この値は、Windows 11 (SDK バージョン 10.0.22000.194) 以降で使用できます。
[out] ppszPathOut
この関数が正常に戻ったときに正規化されたパス文字列を受け取るバッファーへのポインターのアドレス。 呼び出し元は、LocalFree 関数を呼び出すことによって、このリソースが不要になったときに解放する必要があります。 この値は NULL できません。
戻り値
この関数が成功すると、S_OK が返されます。 それ以外の場合は、HRESULT エラー コードが返されます。
この関数は、次の代替パス形式をサポートしています。
\\?\
\\?\\UNC\
\\?\Volume{guid}\
この関数は、スラッシュ (/) をバック スラッシュ (\) に変換しません。 信頼されていない入力では、この関数自体を使用して、サブパスまたは ID の他のパスと比較できる形式にパスを変換することはできません。 その機能を必要とする呼び出し元は、この関数を使用する前にスラッシュに前方に変換する必要があります。
必要条件
要件
価値
サポートされる最小クライアント
Windows 8 [デスクトップ アプリ |UWP アプリ]
サポートされる最小サーバー
Windows Server 2012 [デスクトップ アプリ |UWP アプリ]
ターゲット プラットフォーム の
ウィンドウズ
ヘッダー
pathcch.h
ライブラリ
Pathcch.lib