GetLongPathNameA 関数 (fileapi.h)
指定したパスを長い形式に変換します。
この操作をトランザクション操作として実行するには、 GetLongPathNameTransacted 関数を使用します。
ファイル名とパス名の詳細については、「 名前付けファイル、パス、および名前空間」を参照してください。
構文
DWORD GetLongPathNameA(
[in] LPCSTR lpszShortPath,
[out] LPSTR lpszLongPath,
[in] DWORD cchBuffer
);
パラメーター
[in] lpszShortPath
変換するパス。
[out] lpszLongPath
長いパスを受け取るバッファーへのポインター。
lpszShortPath パラメーターに使用したのと同じバッファーを使用できます。
[in] cchBuffer
TCHAR の lpszLongPath が指すバッファーのサイズ。
戻り値
関数が成功した場合、戻り値は lpszLongPath にコピーされた文字列の長さ (TCHAR) であり、終端の null 文字は含まれません。
lpBuffer バッファーが小さすぎてパスを格納できない場合、戻り値は、パスと終端の null 文字を保持するために必要なバッファーのサイズ (TCHAR) です。
ファイルが存在しない場合など、他の理由で関数が失敗した場合、戻り値は 0 になります。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
多くのファイル システムでは、短いファイル名にチルダ (~) 文字が含まれています。 ただし、すべてのファイル システムがこの規則に従うわけではありません。 したがって、パスにチルダ (~) 文字が含まれていない場合は 、GetLongPathName の 呼び出しをスキップできると想定しないでください。
ファイルまたはディレクトリが存在するが、長いパスが見つからない場合、 GetLongPathName は成功し、 lpszShortPath パラメーターによって参照される文字列が lpszLongPath パラメーターによって参照されるバッファーにコピーされます。
戻り値が cchBuffer で指定された値より大きい場合は、パスを保持するのに十分な大きさのバッファーを使用して関数を再度呼び出すことができます。 この例については、 GetFullPathName のコード例に関するセクションを参照してください。
Windows 8 と Windows Server 2012 では、この関数は、次のテクノロジによってサポートされています。
テクノロジ | サポートされています |
---|---|
サーバー メッセージ ブロック (SMB) 3.0 プロトコル | はい |
SMB 3.0 Transparent Failover (TFO) | はい |
スケールアウト ファイル共有 (SO) を使う SMB 3.0 | はい |
クラスターの共有ボリューム ファイル システム (CsvFS) | はい |
Resilient File System (ReFS) | はい |
例
GetLongPathName を使用する例については、「GetFullPathName のコード例」セクションを参照してください。
注意
fileapi.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして GetLongPathName を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | fileapi.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |