GetFullPathNameTransactedW 関数 (winbase.h)
[Microsoft では、開発者がアプリケーションのニーズを達成するために代替手段を利用することを強くお勧めします。 TxF が開発された多くのシナリオは、よりシンプルで利用しやすい手法で実現できます。 また、将来のバージョンの Microsoft Windows では TxF を使用できない場合があります。 詳細、および TxF の代替手段については、「トランザクション NTFS の使用の代替手段」を参照してください。]
トランザクション操作として、指定したファイルの完全パスとファイル名を取得します。
トランザクションなしでこの操作を実行するには、 GetFullPathName 関数を使用します。
ファイル名とパス名の詳細については、「 ファイル名、パス、および名前空間」を参照してください。
構文
DWORD GetFullPathNameTransactedW(
[in] LPCWSTR lpFileName,
[in] DWORD nBufferLength,
[out] LPWSTR lpBuffer,
[out] LPWSTR *lpFilePart,
[in] HANDLE hTransaction
);
パラメーター
[in] lpFileName
ファイルの名前です。
この文字列では、short (8.3 形式) または長いファイル名を使用できます。 この文字列には、共有名またはボリューム名を指定できます。
ファイルはローカル コンピューター上に存在する必要があります。それ以外の場合、関数は失敗し、最後のエラー コードは ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE に設定されます。
[in] nBufferLength
ドライブとパスの null で終わる文字列を受信するバッファーのサイズ (TCHAR)。
[out] lpBuffer
ドライブとパスの null で終わる文字列を受け取るバッファーへのポインター。
[out] lpFilePart
パス内の最終的なファイル名コンポーネントのアドレス ( lpBuffer 内) を受け取るバッファーへのポインター。 この情報を受け取る必要がない場合は 、NULL を指定します 。
lpBuffer がファイルではなくディレクトリを指している場合、lpFilePart は 0 (ゼロ) を受け取ります。
[in] hTransaction
トランザクションへのハンドル。 このハンドルは、 CreateTransaction 関数によって返されます。
戻り値
関数が成功した場合、戻り値は lpBuffer にコピーされた文字列の長さ (TCHAR) であり、終端の null 文字は含まれません。
lpBuffer バッファーが小さすぎてパスを格納できない場合、戻り値は、パスと終端の null 文字を保持するために必要なバッファーのサイズ (TCHAR) です。
その他の理由で関数が失敗した場合、戻り値は 0 になります。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
GetFullPathNameTransacted は、現在のドライブとディレクトリの名前を指定したファイル名とマージして、指定したファイルの完全なパスとファイル名を決定します。 また、完全パスとファイル名のファイル名部分のアドレスも計算します。 この関数は、結果のパスとファイル名が有効であるか、関連付けられているボリューム上に既存のファイルが表示されることを確認しません。
共有名とボリューム名は lpFileName に対して有効な入力です。 たとえば、次のリストは、test-2 がリモート コンピューターで、U: がネットワーク マップ ドライブの場合、返されるパスとファイル名を識別します。
- "\\test-2\q$\lh" を指定した場合、返されるパスは "\\test-2\q$\lh" です
- "\\?\UNC\test-2\q$\lh" を指定すると、返されるパスは "\\?\UNC\test-2\q$\lh" になります。
- "U:" を指定した場合、返されるパスは "U:\" です
戻り値が nBufferLength で指定された値より大きい場合は、パスを保持するのに十分な大きさのバッファーを使用して関数を再度呼び出すことができます。 この場合の例と、動的割り当てに長さ 0 のバッファーを使用する方法については、「コード例」セクションを参照してください。
テクノロジ | サポートされています |
---|---|
サーバー メッセージ ブロック (SMB) 3.0 プロトコル | いいえ |
SMB 3.0 Transparent Failover (TFO) | いいえ |
スケールアウト ファイル共有 (SO) を使う SMB 3.0 | いいえ |
クラスターの共有ボリューム ファイル システム (CsvFS) | いいえ |
Resilient File System (ReFS) | いいえ |
SMB 3.0 では TxF はサポートされていません。
注意
winbase.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして GetFullPathNameTransacted を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | winbase.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |