Fungsi PathCchCanonicalizeEx (pathcch.h)
Menyederhanakan jalur dengan menghapus elemen navigasi seperti "." dan ".." untuk menghasilkan jalur langsung yang terbentuk dengan baik.
Fungsi ini berbeda dari PathCchCanonicalize karena memungkinkan jalur akhir yang lebih lama untuk dibangun.
Fungsi ini berbeda dari PathAllocCanonicalize karena pemanggil harus mendeklarasikan ukuran string yang dikembalikan, yang disimpan pada tumpukan.
Fungsi ini berbeda dari PathCanonicalize karena menerima jalur dengan awalan "\", "\?" dan "\?\UNC".
Sintaks
WINPATHCCHAPI HRESULT PathCchCanonicalizeEx(
[out] PWSTR pszPathOut,
[in] size_t cchPathOut,
[in] PCWSTR pszPathIn,
[in] ULONG dwFlags
);
Parameter
[out] pszPathOut
Penunjuk ke buffer yang, ketika fungsi ini berhasil dikembalikan, menerima string jalur yang diedit.
[in] cchPathOut
Ukuran buffer yang diacu oleh pszPathOut, dalam karakter.
[in] pszPathIn
Penunjuk ke string jalur asli. Jika nilai ini ADALAH NULL, menunjuk ke string kosong, atau menghasilkan string kosong setelah elemen "." dan ".." dihapus, satu garis miring terbalik disalin ke buffer yang diacu oleh pszPathOut.
[in] dwFlags
Satu atau beberapa bendera berikut:
Mengembalikan nilai
Jika fungsi ini berhasil, fungsi akan mengembalikan S_OK. Jika tidak, kode HRESULT akan dikembalikan, termasuk tetapi tidak terbatas pada yang berikut ini.
Menampilkan kode | Deskripsi |
---|---|
|
Nilai cchPathOut lebih besar dari PATHCCH_MAX_CCH. |
|
Segmen jalur memiliki lebih dari PATHCCH_MAX_CCH karakter, atau, jika bendera PATHCCH_ALLOW_LONG_PATHS tidak diatur, melebihi batas panjang segmen jalur standar 256 karakter. |
|
Fungsi tidak dapat mengalokasikan buffer dengan ukuran yang diperlukan. |
Keterangan
Fungsi ini merespons string "." dan ".." yang disematkan di jalur. String ".." menunjukkan untuk menghapus segmen jalur sebelumnya segera. String "." menunjukkan untuk melewati segmen jalur berikutnya. Perhatikan bahwa segmen akar jalur tidak dapat dihapus. Jika ada lebih banyak string ".." daripada segmen jalur, fungsi mengembalikan S_OK dan buffer yang diacu oleh pszPathOut berisi garis miring terbalik tunggal, "\".
Semua titik berikutnya dihapus dari jalur, kecuali jika didahului oleh karakter kartubebas "". Dalam hal ini, satu periode dipertahankan setelah karakter '', tetapi semua periode berikutnya dihapus.
Jika jalur yang dihasilkan adalah drive akar ("x:"), garis miring terbelakang ditambahkan ("x:\").
Fungsi ini tidak mengonversi garis miring ke depan (/) menjadi garis miring belakang (\). Dengan input yang tidak tepercaya, fungsi ini dengan sendirinya, tidak dapat digunakan untuk mengonversi jalur menjadi formulir yang dapat dibandingkan dengan jalur lain untuk sub-jalur atau identitas. Penelepon yang membutuhkan kemampuan tersebut harus mengonversi maju ke garis miring kembali sebelum menggunakan fungsi ini.
Contoh berikut menunjukkan efek string ini.
String asli | String kanonis |
---|---|
C:\name_1\.\name_2\.. \name_3 | C:\name_1\name_3 |
C:\name_1\.. \name_2\.\name_3 | C:\name_2\name_3 |
C:\name_1\name_2\.\name_3\.. \name_4 | C:\name_1\name_2\name_4 |
C:\name_1\.\name_2\.\name_3\.. \name_4\.. | C:\name_1\name_2 |
C:\name_1\*... | C:\name_1\*. |
C:\.. | C:\ |
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 8 [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung | Windows Server 2012 [aplikasi desktop | Aplikasi UWP] |
Target Platform | Windows |
Header | pathcch.h |
Pustaka | Pathcch.lib |