18#define WINBASEAPI DECLSPEC_IMPORT
26#define WINPATHCCHAPI WINBASEAPI
49#define VOLUME_PREFIX L"\\\\?\\Volume"
50#define VOLUME_PREFIX_LEN (ARRAYSIZE(VOLUME_PREFIX) - 1)
52#define PATHCCH_MAX_CCH 0x8000
117 _In_ size_t cchPathOut,
125 _In_ size_t cchPathOut,
134 _In_ size_t cchPathOut,
143 _In_ size_t cchPathOut,
167 _In_ size_t cchPath);
183 _In_ size_t cchPath);
190 _In_ size_t cchPath);
212 _In_ size_t cchPath);
219 _In_ size_t cchPath);
229#ifndef PATHCCH_NO_DEPRECATE
231#undef PathAddBackslash
232#undef PathAddBackslashA
233#undef PathAddBackslashW
235#undef PathAddExtension
236#undef PathAddExtensionA
237#undef PathAddExtensionW
243#undef PathCanonicalize
244#undef PathCanonicalizeA
245#undef PathCanonicalizeW
251#undef PathRenameExtension
252#undef PathRenameExtensionA
253#undef PathRenameExtensionW
256#ifdef DEPRECATE_SUPPORTED
266#pragma deprecated(PathAddBackslash)
267#pragma deprecated(PathAddBackslashA)
268#pragma deprecated(PathAddBackslashW)
270#pragma deprecated(PathAddExtension)
271#pragma deprecated(PathAddExtensionA)
272#pragma deprecated(PathAddExtensionW)
274#pragma deprecated(PathAppend)
275#pragma deprecated(PathAppendA)
276#pragma deprecated(PathAppendW)
278#pragma deprecated(PathCanonicalize)
279#pragma deprecated(PathCanonicalizeA)
280#pragma deprecated(PathCanonicalizeW)
282#pragma deprecated(PathCombine)
283#pragma deprecated(PathCombineA)
284#pragma deprecated(PathCombineW)
286#pragma deprecated(PathRenameExtension)
287#pragma deprecated(PathRenameExtensionA)
288#pragma deprecated(PathRenameExtensionW)
300#define PathAddBackslash PathAddBackslash_instead_use_PathCchAddBackslash;
301#define PathAddBackslashA PathAddBackslash_instead_use_PathCchAddBackslash;
302#define PathAddBackslashW PathAddBackslash_instead_use_PathCchAddBackslash;
304#define PathAddExtension PathAddExtension_instead_use_PathCchAddExtension;
305#define PathAddExtensionA PathAddExtension_instead_use_PathCchAddExtension;
306#define PathAddExtensionW PathAddExtension_instead_use_PathCchAddExtension;
308#define PathAppend PathAppend_instead_use_PathCchAppend;
309#define PathAppendA PathAppend_instead_use_PathCchAppend;
310#define PathAppendW PathAppend_instead_use_PathCchAppend;
312#define PathCanonicalize PathCanonicalize_instead_use_PathCchCanonicalize;
313#define PathCanonicalizeA PathCanonicalize_instead_use_PathCchCanonicalize;
314#define PathCanonicalizeW PathCanonicalize_instead_use_PathCchCanonicalize;
316#define PathCombine PathCombine_instead_use_PathCchCombine;
317#define PathCombineA PathCombine_instead_use_PathCchCombine;
318#define PathCombineW PathCombine_instead_use_PathCchCombine;
320#define PathRenameExtension PathRenameExtension_instead_use_PathCchRenameExtension;
321#define PathRenameExtensionA PathRenameExtension_instead_use_PathCchRenameExtension;
322#define PathRenameExtensionW PathRenameExtension_instead_use_PathCchRenameExtension;
LPCWSTR LPCWSTR LPCWSTR DWORD dwFlags
#define _Inout_updates_(s)
#define _Outptr_opt_result_buffer_(s)
#define DEFINE_ENUM_FLAG_OPERATORS(_ENUMTYPE)
WINPATHCCHAPI HRESULT APIENTRY PathCchCombine(_Out_writes_(cchPathOut) PWSTR pszPathOut, _In_ size_t cchPathOut, _In_opt_ PCWSTR pszPathIn, _In_opt_ PCWSTR pszMore)
WINPATHCCHAPI HRESULT APIENTRY PathCchAddBackslashEx(_Inout_updates_(cchPath) PWSTR pszPath, _In_ size_t cchPath, _Outptr_opt_result_buffer_(*pcchRemaining) PWSTR *ppszEnd, _Out_opt_ size_t *pcchRemaining)
WINPATHCCHAPI HRESULT APIENTRY PathCchFindExtension(_In_reads_(cchPath) PCWSTR pszPath, _In_ size_t cchPath, _Outptr_ PCWSTR *ppszExt)
@ PATHCCH_ENSURE_TRAILING_SLASH
@ PATHCCH_FORCE_ENABLE_LONG_NAME_PROCESS
@ PATHCCH_ALLOW_LONG_PATHS
@ PATHCCH_DO_NOT_NORMALIZE_SEGMENTS
@ PATHCCH_FORCE_DISABLE_LONG_NAME_PROCESS
@ PATHCCH_ENSURE_IS_EXTENDED_LENGTH_PATH
WINPATHCCHAPI HRESULT APIENTRY PathCchAppendEx(_Inout_updates_(cchPath) PWSTR pszPath, _In_ size_t cchPath, _In_opt_ PCWSTR pszMore, _In_ ULONG dwFlags)
WINPATHCCHAPI HRESULT APIENTRY PathCchAddExtension(_Inout_updates_(cchPath) PWSTR pszPath, _In_ size_t cchPath, _In_ PCWSTR pszExt)
WINPATHCCHAPI HRESULT APIENTRY PathAllocCanonicalize(_In_ PCWSTR pszPathIn, _In_ ULONG dwFlags, _Outptr_ PWSTR *ppszPathOut)
WINPATHCCHAPI HRESULT APIENTRY PathCchRemoveBackslashEx(_Inout_updates_(cchPath) PWSTR pszPath, _In_ size_t cchPath, _Outptr_opt_result_buffer_(*pcchRemaining) PWSTR *ppszEnd, _Out_opt_ size_t *pcchRemaining)
WINPATHCCHAPI HRESULT APIENTRY PathCchRemoveExtension(_Inout_updates_(cchPath) PWSTR pszPath, _In_ size_t cchPath)
WINPATHCCHAPI HRESULT APIENTRY PathCchStripPrefix(_Inout_updates_(cchPath) PWSTR pszPath, _In_ size_t cchPath)
WINPATHCCHAPI HRESULT APIENTRY PathCchSkipRoot(_In_ PCWSTR pszPath, _Outptr_ PCWSTR *ppszRootEnd)
WINPATHCCHAPI HRESULT APIENTRY PathCchRenameExtension(_Inout_updates_(cchPath) PWSTR pszPath, _In_ size_t cchPath, _In_ PCWSTR pszExt)
WINPATHCCHAPI HRESULT APIENTRY PathCchCanonicalizeEx(_Out_writes_(cchPathOut) PWSTR pszPathOut, _In_ size_t cchPathOut, _In_ PCWSTR pszPathIn, _In_ ULONG dwFlags)
WINPATHCCHAPI HRESULT APIENTRY PathCchRemoveFileSpec(_Inout_updates_(cchPath) PWSTR pszPath, _In_ size_t cchPath)
WINPATHCCHAPI HRESULT APIENTRY PathCchAppend(_Inout_updates_(cchPath) PWSTR pszPath, _In_ size_t cchPath, _In_opt_ PCWSTR pszMore)
WINPATHCCHAPI HRESULT APIENTRY PathCchCombineEx(_Out_writes_(cchPathOut) PWSTR pszPathOut, _In_ size_t cchPathOut, _In_opt_ PCWSTR pszPathIn, _In_opt_ PCWSTR pszMore, _In_ ULONG dwFlags)
WINPATHCCHAPI HRESULT APIENTRY PathCchAddBackslash(_Inout_updates_(cchPath) PWSTR pszPath, _In_ size_t cchPath)
WINPATHCCHAPI HRESULT APIENTRY PathCchStripToRoot(_Inout_updates_(cchPath) PWSTR pszPath, _In_ size_t cchPath)
WINPATHCCHAPI BOOL APIENTRY PathCchIsRoot(_In_opt_ PCWSTR pszPath)
WINPATHCCHAPI HRESULT APIENTRY PathCchRemoveBackslash(_Inout_updates_(cchPath) PWSTR pszPath, _In_ size_t cchPath)
WINPATHCCHAPI HRESULT APIENTRY PathAllocCombine(_In_opt_ PCWSTR pszPathIn, _In_opt_ PCWSTR pszMore, _In_ ULONG dwFlags, _Outptr_ PWSTR *ppszPathOut)
WINPATHCCHAPI BOOL APIENTRY PathIsUNCEx(_In_ PCWSTR pszPath, _Outptr_opt_ PCWSTR *ppszServer)
WINPATHCCHAPI HRESULT APIENTRY PathCchCanonicalize(_Out_writes_(cchPathOut) PWSTR pszPathOut, _In_ size_t cchPathOut, _In_ PCWSTR pszPathIn)