Bagikan melalui


Fungsi PathCchCanonicalize (pathcch.h)

Mengonversi string jalur menjadi bentuk kanonis.

Fungsi ini berbeda dari PathCchCanonicalizeEx karena Anda dibatasi untuk jalur akhir panjang MAX_PATH.

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".

Catatan Fungsi ini, PathCchCanonicalizeEx, atau PathAllocCanonicalize harus digunakan sebagai pengganti PathCanonicalize untuk mencegah kemungkinan buffer diserbu.

Sintaks

WINPATHCCHAPI HRESULT PathCchCanonicalize(
  [out] PWSTR  pszPathOut,
  [in]  size_t cchPathOut,
  [in]  PCWSTR pszPathIn
);

Parameter

[out] pszPathOut

Penunjuk ke buffer yang, ketika fungsi ini berhasil kembali, menerima string jalur kanonis.

[in] cchPathOut

Ukuran buffer yang diacu oleh pszPathOut, dalam karakter.

[in] pszPathIn

Penunjuk ke string jalur asli. Jika nilai ini menunjuk ke string kosong, atau menghasilkan string kosong setelah elemen "." dan ".." dihapus, satu garis miring terbalik disalin ke buffer yang diacu oleh pszPathOut.

Menampilkan nilai

Jika fungsi ini berhasil, fungsi akan mengembalikan S_OK. Jika tidak, kode HRESULT akan dikembalikan, termasuk kode berikut.

Menampilkan kode Deskripsi
E_INVALIDARG
Nilai cchPathOut lebih besar dari PATHCCH_MAX_CCH.
PATHCCH_E_FILENAME_TOO_LONG
Segmen jalur melebihi batas panjang segmen jalur standar 256 karakter.
E_OUTOFMEMORY
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 melompati 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 titik 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 kembali (\). 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

   
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

Lihat juga

PathCchCanonicalizeEx