18#define WINBASEAPI DECLSPEC_IMPORT
27#define WINPATHCCHAPI WINBASEAPI
39#define PATHCCH_NONE 0x00
40#define PATHCCH_ALLOW_LONG_PATHS 0x01
41#define PATHCCH_FORCE_ENABLE_LONG_NAME_PROCESS 0x02
42#define PATHCCH_FORCE_DISABLE_LONG_NAME_PROCESS 0x04
43#define PATHCCH_DO_NOT_NORMALIZE_SEGMENTS 0x08
44#define PATHCCH_ENSURE_IS_EXTENDED_LENGTH_PATH 0x10
45#define PATHCCH_ENSURE_TRAILING_SLASH 0x20
48#define VOLUME_PREFIX L"\\\\?\\Volume"
49#define VOLUME_PREFIX_LEN (ARRAYSIZE(VOLUME_PREFIX) - 1)
51#define PATHCCH_MAX_CCH 0x8000
116 _In_ size_t cchPathOut,
124 _In_ size_t cchPathOut,
133 _In_ size_t cchPathOut,
142 _In_ size_t cchPathOut,
166 _In_ size_t cchPath);
182 _In_ size_t cchPath);
189 _In_ size_t cchPath);
211 _In_ size_t cchPath);
218 _In_ size_t cchPath);
228#ifndef PATHCCH_NO_DEPRECATE
230#undef PathAddBackslash
231#undef PathAddBackslashA
232#undef PathAddBackslashW
234#undef PathAddExtension
235#undef PathAddExtensionA
236#undef PathAddExtensionW
242#undef PathCanonicalize
243#undef PathCanonicalizeA
244#undef PathCanonicalizeW
250#undef PathRenameExtension
251#undef PathRenameExtensionA
252#undef PathRenameExtensionW
255#ifdef DEPRECATE_SUPPORTED
265#pragma deprecated(PathAddBackslash)
266#pragma deprecated(PathAddBackslashA)
267#pragma deprecated(PathAddBackslashW)
269#pragma deprecated(PathAddExtension)
270#pragma deprecated(PathAddExtensionA)
271#pragma deprecated(PathAddExtensionW)
273#pragma deprecated(PathAppend)
274#pragma deprecated(PathAppendA)
275#pragma deprecated(PathAppendW)
277#pragma deprecated(PathCanonicalize)
278#pragma deprecated(PathCanonicalizeA)
279#pragma deprecated(PathCanonicalizeW)
281#pragma deprecated(PathCombine)
282#pragma deprecated(PathCombineA)
283#pragma deprecated(PathCombineW)
285#pragma deprecated(PathRenameExtension)
286#pragma deprecated(PathRenameExtensionA)
287#pragma deprecated(PathRenameExtensionW)
299#define PathAddBackslash PathAddBackslash_instead_use_PathCchAddBackslash;
300#define PathAddBackslashA PathAddBackslash_instead_use_PathCchAddBackslash;
301#define PathAddBackslashW PathAddBackslash_instead_use_PathCchAddBackslash;
303#define PathAddExtension PathAddExtension_instead_use_PathCchAddExtension;
304#define PathAddExtensionA PathAddExtension_instead_use_PathCchAddExtension;
305#define PathAddExtensionW PathAddExtension_instead_use_PathCchAddExtension;
307#define PathAppend PathAppend_instead_use_PathCchAppend;
308#define PathAppendA PathAppend_instead_use_PathCchAppend;
309#define PathAppendW PathAppend_instead_use_PathCchAppend;
311#define PathCanonicalize PathCanonicalize_instead_use_PathCchCanonicalize;
312#define PathCanonicalizeA PathCanonicalize_instead_use_PathCchCanonicalize;
313#define PathCanonicalizeW PathCanonicalize_instead_use_PathCchCanonicalize;
315#define PathCombine PathCombine_instead_use_PathCchCombine;
316#define PathCombineA PathCombine_instead_use_PathCchCombine;
317#define PathCombineW PathCombine_instead_use_PathCchCombine;
319#define PathRenameExtension PathRenameExtension_instead_use_PathCchRenameExtension;
320#define PathRenameExtensionA PathRenameExtension_instead_use_PathCchRenameExtension;
321#define PathRenameExtensionW PathRenameExtension_instead_use_PathCchRenameExtension;
#define _Inout_updates_(s)
#define _Outptr_opt_result_buffer_(s)
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)
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)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags