2 * Copyright 2017 Michael Müller
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #define PATHCCH_NONE 0x00
20 #define PATHCCH_ALLOW_LONG_PATHS 0x01
21 #define PATHCCH_FORCE_ENABLE_LONG_NAME_PROCESS 0x02
22 #define PATHCCH_FORCE_DISABLE_LONG_NAME_PROCESS 0x04
23 #define PATHCCH_DO_NOT_NORMALIZE_SEGMENTS 0x08
24 #define PATHCCH_ENSURE_IS_EXTENDED_LENGTH_PATH 0x10
25 #define PATHCCH_ENSURE_TRAILING_SLASH 0x20
27 #define PATHCCH_MAX_CCH 0x8000
29 WINBASEAPI HRESULT WINAPI
PathAllocCanonicalize(const WCHAR
*path_in
, DWORD flags
, WCHAR
**path_out
);
30 WINBASEAPI HRESULT WINAPI
PathAllocCombine(const WCHAR
*path1
, const WCHAR
*path2
, DWORD flags
, WCHAR
**out
);
31 WINBASEAPI HRESULT WINAPI
PathCchAddBackslash(WCHAR
*path
, SIZE_T size
);
32 WINBASEAPI HRESULT WINAPI
PathCchAddBackslashEx(WCHAR
*path
, SIZE_T size
, WCHAR
**end
, SIZE_T
*remaining
);
33 WINBASEAPI HRESULT WINAPI
PathCchAddExtension(WCHAR
*path
, SIZE_T size
, const WCHAR
*extension
);
34 WINBASEAPI HRESULT WINAPI
PathCchAppend(WCHAR
*path1
, SIZE_T size
, const WCHAR
*path2
);
35 WINBASEAPI HRESULT WINAPI
PathCchAppendEx(WCHAR
*path1
, SIZE_T size
, const WCHAR
*path2
, DWORD flags
);
36 WINBASEAPI HRESULT WINAPI
PathCchCanonicalize(WCHAR
*out
, SIZE_T size
, const WCHAR
*in
);
37 WINBASEAPI HRESULT WINAPI
PathCchCanonicalizeEx(WCHAR
*out
, SIZE_T size
, const WCHAR
*in
, DWORD flags
);
38 WINBASEAPI HRESULT WINAPI
PathCchCombine(WCHAR
*out
, SIZE_T size
, const WCHAR
*path1
, const WCHAR
*path2
);
39 WINBASEAPI HRESULT WINAPI
PathCchCombineEx(WCHAR
*out
, SIZE_T size
, const WCHAR
*path1
, const WCHAR
*path2
, DWORD flags
);
40 WINBASEAPI HRESULT WINAPI
PathCchFindExtension(const WCHAR
*path
, SIZE_T size
, const WCHAR
**extension
);
41 WINBASEAPI BOOL WINAPI
PathCchIsRoot(const WCHAR
*path
);
42 WINBASEAPI HRESULT WINAPI
PathCchRemoveBackslash(WCHAR
*path
, SIZE_T path_size
);
43 WINBASEAPI HRESULT WINAPI
PathCchRemoveBackslashEx(WCHAR
*path
, SIZE_T path_size
, WCHAR
**path_end
, SIZE_T
*free_size
);
44 WINBASEAPI HRESULT WINAPI
PathCchRemoveExtension(WCHAR
*path
, SIZE_T size
);
45 WINBASEAPI HRESULT WINAPI
PathCchRemoveFileSpec(WCHAR
*path
, SIZE_T size
);
46 WINBASEAPI HRESULT WINAPI
PathCchRenameExtension(WCHAR
*path
, SIZE_T size
, const WCHAR
*extension
);
47 WINBASEAPI HRESULT WINAPI
PathCchSkipRoot(const WCHAR
*path
, const WCHAR
**root_end
);
48 WINBASEAPI HRESULT WINAPI
PathCchStripPrefix(WCHAR
*path
, SIZE_T size
);
49 WINBASEAPI HRESULT WINAPI
PathCchStripToRoot(WCHAR
*path
, SIZE_T size
);
50 WINBASEAPI BOOL WINAPI
PathIsUNCEx(const WCHAR
*path
, const WCHAR
**server
);