Bagikan melalui


Fungsi GetLongPathNameTransactedA (winbase.h)

[Microsoft sangat menyarankan pengembang menggunakan cara alternatif untuk mencapai kebutuhan aplikasi Anda. Banyak skenario yang dikembangkan TxF dapat dicapai melalui teknik yang lebih sederhana dan lebih tersedia. Selain itu, TxF mungkin tidak tersedia di versi Microsoft Windows yang akan datang. Untuk informasi lebih lanjut, dan alternatif TxF, silakan lihat Alternatif untuk menggunakan Transactional NTFS.]

Mengonversi jalur yang ditentukan ke bentuk panjangnya sebagai operasi yang ditransaksikan.

Untuk melakukan operasi ini tanpa transaksi, gunakan fungsi GetLongPathName .

Untuk informasi selengkapnya tentang nama file dan jalur, lihat Menamai File, Jalur, dan Namespace.

Sintaks

DWORD GetLongPathNameTransactedA(
  [in]  LPCSTR lpszShortPath,
  [out] LPSTR  lpszLongPath,
  [in]  DWORD  cchBuffer,
  [in]  HANDLE hTransaction
);

Parameter

[in] lpszShortPath

Jalur yang akan dikonversi.

Secara default, nama terbatas pada MAX_PATH karakter. Untuk memperpanjang batas ini menjadi 32.767 karakter lebar, tambahkan "\\?\" ke jalur. Untuk informasi selengkapnya, lihat Menamai File, Jalur, dan Namespace.

Tip

Dimulai dengan Windows 10, Versi 1607, Anda dapat ikut serta untuk menghapus batasan MAX_PATH tanpa menambahkan awalan "\\?\". Lihat bagian "Batasan Panjang Jalur Maksimum" dari Penamaan File, Jalur, dan Namespace untuk detailnya.

Jalur harus berada di komputer lokal; jika tidak, fungsi gagal dan kode kesalahan terakhir diatur ke ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE.

[out] lpszLongPath

Penunjuk ke buffer untuk menerima jalur panjang.

Anda dapat menggunakan buffer yang sama dengan yang Anda gunakan untuk parameter lpszShortPath .

[in] cchBuffer

Ukuran buffer lpszLongPath menunjuk ke, dalam TCHARs.

[in] hTransaction

Handel ke transaksi. Handel ini dikembalikan oleh fungsi CreateTransaction .

Mengembalikan nilai

Jika fungsi berhasil, nilai yang dikembalikan adalah panjangnya, dalam TCHARs, dari string yang disalin ke lpszLongPath, tidak termasuk karakter null yang mengakhiri.

Jika buffer lpBuffer terlalu kecil untuk memuat jalur, nilai yang dikembalikan adalah ukuran, dalam TCHARs, dari buffer yang diperlukan untuk menahan jalur dan karakter null yang mengakhiri.

Jika fungsi gagal karena alasan lain, seperti jika file tidak ada, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Pada banyak sistem file, nama file pendek berisi karakter tilde (~). Namun, tidak semua sistem file mengikuti konvensi ini. Oleh karena itu, jangan berasumsi bahwa Anda dapat melewati panggilan GetLongPathNameTransacted jika jalur tidak berisi karakter tilde (~).

Jika jalur panjang tidak ditemukan, fungsi ini mengembalikan nama yang ditentukan dalam parameter lpszShortPath dalam parameter lpszLongPath .

Jika nilai yang dikembalikan lebih besar dari nilai yang ditentukan dalam cchBuffer, Anda dapat memanggil fungsi lagi dengan buffer yang cukup besar untuk menahan jalur. Untuk contoh kasus ini, lihat bagian Contoh Kode untuk GetFullPathName.

Catatan Meskipun nilai yang dikembalikan dalam kasus ini adalah panjang yang menyertakan karakter null yang mengakhiri, nilai pengembalian pada keberhasilan tidak menyertakan karakter null yang mengakhiri dalam hitungan.
 
Dimungkinkan untuk memiliki akses ke file atau direktori tetapi tidak memiliki akses ke beberapa direktori induk file atau direktori tersebut. Akibatnya, GetLongPathNameTransacted mungkin gagal ketika tidak dapat mengkueri direktori induk komponen jalur untuk menentukan nama panjang untuk komponen tersebut. Pemeriksaan ini dapat dilewati untuk komponen direktori yang memiliki ekstensi file lebih dari 3 karakter, atau total panjang lebih dari 12 karakter. Untuk informasi selengkapnya, lihat bagian Nama Pendek vs. Panjang dari Penamaan File, Jalur, dan Namespace.

Di Windows 8 dan Windows Server 2012, fungsi ini didukung oleh teknologi berikut.

Teknologi Didukung
Protokol Server Message Block (SMB) 3.0 Tidak
SMB 3.0 Transparent Failover (TFO) Tidak
SMB 3.0 dengan Scale-out File Shares (SO) Tidak
Sistem File Volume Bersama Kluster (CsvFS) Tidak
Sistem File Tangguh (ReFS) Tidak
 

SMB 3.0 tidak mendukung TxF.

Catatan

Header winbase.h mendefinisikan GetLongPathNameTransacted sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta preprosedur UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 [hanya aplikasi desktop]
Target Platform Windows
Header winbase.h (termasuk Windows.h)
Pustaka Kernel32.lib
DLL Kernel32.dll

Lihat juga

Fungsi Manajemen File

GetFullPathNameTransacted

GetShortPathName

Menamai File, Jalur, dan Namespace

NTFS Transaksi