PathAllocCanonicalize 関数 (pathcch.h)

パス文字列を正規形式に変換します。

この関数は、ヒープで結果を返す点で 、PathCchCanonicalize および PathCchCanonicalizeEx とは異なります。 つまり、呼び出し元は返される文字列のサイズを宣言する必要がないため、スタックの使用が減ります。

この関数は PathCanonicalize とは異なり、"\"、"\?" および "\?\UNC" プレフィックスを持つパスを受け入れます。

メモ この関数 PathCchCanonicalize または PathCchCanonicalizeEx は、 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 以降で使用できます。

[out] ppszPathOut

この関数が正常に返されたときに正規化されたパス文字列を受け取るバッファーへのポインターのアドレス。 このリソースが不要になったときに LocalFree 関数を呼び出すことで、このリソースを解放するのは呼び出し元の責任です。 この値を NULL にすることはできません。

戻り値

この関数が成功すると、 S_OKが返されます。 そうでない場合は、HRESULT エラー コードを返します。

注釈

この関数は、次の代替パス形式をサポートしています。

  • \\?\
  • \\。\\Unc\
  • \\?\Volume{guid}\

この関数は、スラッシュ (/) をバック スラッシュ (\) に変換しません。 信頼されていない入力では、この関数自体を使用して、パスをサブパスまたは ID の他のパスと比較できるフォームに変換することはできません。 その機能を必要とする呼び出し元は、この関数を使用する前にバック スラッシュに変換する必要があります。

要件

要件
サポートされている最小のクライアント Windows 8 [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows Server 2012 [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー pathcch.h
Library Pathcch.lib