Bagikan melalui


Fungsi PathCchCombineEx (pathcch.h)

Menggabungkan dua fragmen jalur ke dalam satu jalur. Fungsi ini juga mengkanonikalisasi elemen jalur relatif apa pun, menghapus elemen "." dan ".." untuk menyederhanakan jalur akhir.

Fungsi ini berbeda dari PathCchCombine karena memungkinkan jalur akhir yang lebih lama untuk dibangun.

Fungsi ini berbeda dari PathAllocCombine karena pemanggil harus mendeklarasikan ukuran string yang dikembalikan, yang disimpan pada tumpukan.

Fungsi ini berbeda dari PathCombine karena menerima jalur dengan awalan "\", "\?" dan "\?\UNC".

Catatan Fungsi ini, PathCchCombine, atau PathAllocCombine harus digunakan sebagai pengganti PathCombine untuk mencegah kemungkinan buffer diserbu.

Sintaks

WINPATHCCHAPI HRESULT PathCchCombineEx(
  [out]          PWSTR  pszPathOut,
  [in]           size_t cchPathOut,
  [in, optional] PCWSTR pszPathIn,
  [in, optional] PCWSTR pszMore,
  [in]           ULONG  dwFlags
);

Parameter

[out] pszPathOut

Penunjuk ke buffer yang, ketika fungsi ini berhasil dikembalikan, menerima string jalur gabungan. Parameter ini dapat menunjuk ke buffer yang sama dengan pszPathIn atau pszMore.

[in] cchPathOut

Ukuran buffer yang diacu oleh pszPathOut, dalam karakter.

[in, optional] pszPathIn

Penunjuk ke string jalur pertama. Nilai ini bisa NULL.

[in, optional] pszMore

Penunjuk ke string jalur kedua. Jika jalur ini dimulai dengan garis miring terbalik tunggal, jalur ini hanya dikombinasikan dengan akar jalur yang diacu oleh pszPathIn. Jika jalur ini sepenuhnya memenuhi syarat, jalur ini disalin langsung ke buffer output tanpa digabungkan dengan jalur lain. Nilai ini bisa NULL.

[in] dwFlags

Satu atau beberapa bendera berikut:

Nilai Makna
PATHCCH_NONE
0x0000000
Jangan izinkan pembangunan jalur \\?\ (yaitu, jalur panjang) lebih lama dari MAX_PATH .
PATHCCH_ALLOW_LONG_PATHS
0x00000001
Izinkan pembangunan jalur \\?\ lebih lama dari MAX_PATH. Perhatikan bahwa cchPathOut harus lebih besar dari MAX_PATH. Jika tidak, bendera ini diabaikan.
PATHCCH_FORCE_ENABLE_LONG_NAME_PROCESS
0x00000002
Memaksa API untuk memperlakukan pemanggil selama jalur panjang diaktifkan, terlepas dari status nama panjang proses yang diaktifkan. Opsi ini hanya dapat digunakan ketika PATHCCH_ALLOW_LONG_PATHS ditentukan, dan tidak dapat digunakan dengan PATHCCH_FORCE_DISABLE_LONG_NAME_PROCESS.

Catatan Nilai ini tersedia mulai dari Windows 10, versi 1703.

PATHCCH_FORCE_DISABLE_LONG_NAME_PROCESS
0x00000004
Memaksa API untuk memperlakukan pemanggil selama jalur panjang dinonaktifkan, terlepas dari status nama panjang proses yang diaktifkan. Opsi ini hanya dapat digunakan ketika PATHCCH_ALLOW_LONG_PATHS ditentukan, dan tidak dapat digunakan dengan PATHCCH_FORCE_ENABLE_LONG_NAME_PROCESS.

Catatan Nilai ini tersedia mulai dari Windows 10, versi 1703.

PATHCCH_DO_NOT_NORMALIZE_SEGMENTS
0x00000008
Menonaktifkan normalisasi segmen jalur yang mencakup penghapusan titik dan spasi berikutnya. Ini memungkinkan akses ke jalur yang akan diblokir oleh normalisasi jalur win32.

Catatan Nilai ini tersedia mulai dari Windows 10, versi 1703.

PATHCCH_ENSURE_IS_EXTENDED_LENGTH_PATH
0x00000010
Mengonversi jalur input ke dalam formulir jalur perangkat DOS panjang yang diperluas (dengan awalan \\?\) jika belum dalam formulir tersebut. Ini memungkinkan akses ke jalur yang sebaliknya tidak dapat diatasi karena aturan normalisasi Win32 (yang dapat menghapus titik dan spasi berikutnya) dan batasan panjang jalur. Opsi ini menyiratkan perilaku PATHCCH_DO_NOT_NORMALIZE_SEGMENTS yang sama.

Catatan Nilai ini tersedia mulai dari Windows 10, versi 1703.

Mengembalikan nilai

Fungsi ini mengembalikan kode HRESULT , termasuk yang berikut ini.

Menampilkan kode Deskripsi
S_OK
Fungsi berhasil. Perhatikan bahwa ini juga mencakup kasus ekstensi kosong, seperti titik tanpa karakter yang mengikutinya. Dalam hal ini, string asli dikembalikan tanpa diubah.
E_INVALIDARG
Nilai ini dapat disebabkan oleh beberapa hal, seperti param pszPathOut yang diatur ke NULL, atau nilai cchPathOut diatur ke 0 atau nilai yang lebih besar dari PATHCCH_MAX_CCH .
E_OUTOFMEMORY
Fungsi tidak dapat mengalokasikan cukup memori untuk melakukan operasi.
PATHCCH_E_FILENAME_TOO_LONG
Ukuran satu atau kedua jalur asli melebihi PATHCCH_MAX_CCH .

Keterangan

Jika pszPathIn dan pszMorenull atau mengarah ke string kosong, satu garis miring terbalik disalin ke buffer yang diacu oleh pszPathOut.

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

Lihat juga

PathCchCanonicalize

PathCchCanonicalizeEx

PathCchCombine