PathCchAppendEx 関数 (pathcch.h)

1 つのパスを別のパスの末尾に追加します。

この関数は PathCchAppend とは異なり、より長い最終パスを構築できます。

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

メモ この関数 ( PathCchAppend) は、バッファー オーバーランの可能性を防ぐために PathAppend の代わりに使用する必要があります。

構文

WINPATHCCHAPI HRESULT PathCchAppendEx(
  [in, out]      PWSTR  pszPath,
  [in]           size_t cchPath,
  [in, optional] PCWSTR pszMore,
  [in]           ULONG  dwFlags
);

パラメーター

[in, out] pszPath

エントリ時に元のパスを含むバッファーへのポインター。 この関数が正常に返されると、バッファーには元のパスと追加されたパスが含まれます。

[in] cchPath

pszPath が指すバッファーのサイズ (文字数)。

[in, optional] pszMore

pszPath が指すパスの末尾に追加するパスを指すポインター。 シーケンス \?\ で始まる UNC パスとパスは、完全修飾パスとして受け入れられ、認識されます。 これらのパスは、追加されるのではなく 、pszPath が指す文字列を置き換えます。

[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 以降で使用できます。

戻り値

この関数が成功すると、 S_OKが返されます。 それ以外の場合は、次のような HRESULT コードを返します。

リターン コード 説明
E_INVALIDARG
pszPath または pszMoreNULLcchPath が 0、または cchPathPATHCCH_MAX_CCHより大きい。
PATHCCH_E_FILENAME_TOO_LONG
結果の文字列が PATHCCH_MAX_CCHを超える可能性があります。
E_OUTOFMEMORY
関数は、必要なサイズのバッファーを割り当てませんでした。

注釈

この関数は、2 つの文字列の間に円記号を挿入します (まだ存在しない場合)。

要件

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

こちらもご覧ください

PathCchAppend