pathcch.h (6112B) - Raw
1 /** 2 * This file is part of the mingw-w64 runtime package. 3 * No warranty is given; refer to the file DISCLAIMER within this package. 4 */ 5 6 #include <apiset.h> 7 #include <apisetcconv.h> 8 #include <minwindef.h> 9 #include <minwinbase.h> 10 11 #ifdef __cplusplus 12 extern "C" { 13 #endif 14 15 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP) 16 17 #define VOLUME_PREFIX L"\\\\?\\Volume" 18 #define VOLUME_PREFIX_LEN (ARRAYSIZE (VOLUME_PREFIX) - 1) 19 20 #define PATHCCH_MAX_CCH 0x8000 21 22 typedef enum PATHCCH_OPTIONS { 23 PATHCCH_NONE = 0x0, 24 PATHCCH_ALLOW_LONG_PATHS = 0x01, 25 PATHCCH_FORCE_ENABLE_LONG_NAME_PROCESS = 0x02, 26 PATHCCH_FORCE_DISABLE_LONG_NAME_PROCESS = 0x04, 27 PATHCCH_DO_NOT_NORMALIZE_SEGMENTS = 0x08, 28 PATHCCH_ENSURE_IS_EXTENDED_LENGTH_PATH = 0x10, 29 PATHCCH_ENSURE_TRAILING_SLASH = 0x020, 30 PATHCCH_CANONICALIZE_SLASHES = 0x040 31 } PATHCCH_OPTIONS; 32 DEFINE_ENUM_FLAG_OPERATORS(PATHCCH_OPTIONS) 33 34 WINPATHCCHAPI HRESULT APIENTRY PathAllocCombine (PCWSTR pszPathIn, PCWSTR pszMore, unsigned long dwFlags, PWSTR *ppszPathOut); 35 WINPATHCCHAPI HRESULT APIENTRY PathAllocCanonicalize (PCWSTR pszPathIn, unsigned long dwFlags, PWSTR *ppszPathOut); 36 WINPATHCCHAPI HRESULT APIENTRY PathCchAddBackslash (PWSTR pszPath, size_t cchPath); 37 WINPATHCCHAPI HRESULT APIENTRY PathCchAddBackslashEx (PWSTR pszPath, size_t cchPath, PWSTR *ppszEnd, size_t *pcchRemaining); 38 WINPATHCCHAPI HRESULT APIENTRY PathCchAddExtension (PWSTR pszPath, size_t cchPath, PCWSTR pszExt); 39 WINPATHCCHAPI HRESULT APIENTRY PathCchAppend (PWSTR pszPath, size_t cchPath, PCWSTR pszMore); 40 WINPATHCCHAPI HRESULT APIENTRY PathCchAppendEx (PWSTR pszPath, size_t cchPath, PCWSTR pszMore, unsigned long dwFlags); 41 WINPATHCCHAPI HRESULT APIENTRY PathCchCanonicalize (PWSTR pszPathOut, size_t cchPathOut, PCWSTR pszPathIn); 42 WINPATHCCHAPI HRESULT APIENTRY PathCchCanonicalizeEx (PWSTR pszPathOut, size_t cchPathOut, PCWSTR pszPathIn, unsigned long dwFlags); 43 WINPATHCCHAPI HRESULT APIENTRY PathCchCombine (PWSTR pszPathOut, size_t cchPathOut, PCWSTR pszPathIn, PCWSTR pszMore); 44 WINPATHCCHAPI HRESULT APIENTRY PathCchCombineEx (PWSTR pszPathOut, size_t cchPathOut, PCWSTR pszPathIn, PCWSTR pszMore, unsigned long dwFlags); 45 WINPATHCCHAPI HRESULT APIENTRY PathCchFindExtension (PCWSTR pszPath, size_t cchPath, PCWSTR *ppszExt); 46 WINPATHCCHAPI WINBOOL APIENTRY PathCchIsRoot (PCWSTR pszPath); 47 WINPATHCCHAPI HRESULT APIENTRY PathCchRemoveBackslashEx (PWSTR pszPath, size_t cchPath, PWSTR *ppszEnd, size_t *pcchRemaining); 48 WINPATHCCHAPI HRESULT APIENTRY PathCchRemoveBackslash (PWSTR pszPath, size_t cchPath); 49 WINPATHCCHAPI HRESULT APIENTRY PathCchRemoveExtension (PWSTR pszPath, size_t cchPath); 50 WINPATHCCHAPI HRESULT APIENTRY PathCchRemoveFileSpec (PWSTR pszPath, size_t cchPath); 51 WINPATHCCHAPI HRESULT APIENTRY PathCchRenameExtension (PWSTR pszPath, size_t cchPath, PCWSTR pszExt); 52 WINPATHCCHAPI HRESULT APIENTRY PathCchSkipRoot (PCWSTR pszPath, PCWSTR *ppszRootEnd); 53 WINPATHCCHAPI HRESULT APIENTRY PathCchStripPrefix (PWSTR pszPath, size_t cchPath); 54 WINPATHCCHAPI HRESULT APIENTRY PathCchStripToRoot (PWSTR pszPath, size_t cchPath); 55 WINPATHCCHAPI WINBOOL APIENTRY PathIsUNCEx (PCWSTR pszPath, PCWSTR *ppszServer); 56 57 #ifndef PATHCCH_NO_DEPRECATE 58 #undef PathAddBackslash 59 #undef PathAddBackslashA 60 #undef PathAddBackslashW 61 62 #undef PathAddExtension 63 #undef PathAddExtensionA 64 #undef PathAddExtensionW 65 66 #undef PathAppend 67 #undef PathAppendA 68 #undef PathAppendW 69 70 #undef PathCanonicalize 71 #undef PathCanonicalizeA 72 #undef PathCanonicalizeW 73 74 #undef PathCombine 75 #undef PathCombineA 76 #undef PathCombineW 77 78 #undef PathRenameExtension 79 #undef PathRenameExtensionA 80 #undef PathRenameExtensionW 81 82 #ifndef DEPRECATE_SUPPORTED 83 #define PathIsRelativeWorker PathIsRelativeWorker_is_internal_to_pathcch; 84 #define StrIsEqualWorker StrIsEqualWorker_is_internal_to_pathcch; 85 #define FindPreviousBackslashWorker FindPreviousBackslashWorker_is_internal_to_pathcch; 86 #define IsHexDigitWorker IsHexDigitWorker_is_internal_to_pathcch; 87 #define StringIsGUIDWorker StringIsGUIDWorker_is_internal_to_pathcch; 88 #define PathIsVolumeGUIDWorker PathIsVolumeGUIDWorker_is_internal_to_pathcch; 89 #define IsValidExtensionWorker IsValidExtensionWorker_is_internal_to_pathcch; 90 91 #define PathAddBackslash PathAddBackslash_instead_use_PathCchAddBackslash; 92 #define PathAddBackslashA PathAddBackslash_instead_use_PathCchAddBackslash; 93 #define PathAddBackslashW PathAddBackslash_instead_use_PathCchAddBackslash; 94 95 #define PathAddExtension PathAddExtension_instead_use_PathCchAddExtension; 96 #define PathAddExtensionA PathAddExtension_instead_use_PathCchAddExtension; 97 #define PathAddExtensionW PathAddExtension_instead_use_PathCchAddExtension; 98 99 #define PathAppend PathAppend_instead_use_PathCchAppend; 100 #define PathAppendA PathAppend_instead_use_PathCchAppend; 101 #define PathAppendW PathAppend_instead_use_PathCchAppend; 102 103 #define PathCanonicalize PathCanonicalize_instead_use_PathCchCanonicalize; 104 #define PathCanonicalizeA PathCanonicalize_instead_use_PathCchCanonicalize; 105 #define PathCanonicalizeW PathCanonicalize_instead_use_PathCchCanonicalize; 106 107 #define PathCombine PathCombine_instead_use_PathCchCombine; 108 #define PathCombineA PathCombine_instead_use_PathCchCombine; 109 #define PathCombineW PathCombine_instead_use_PathCchCombine; 110 111 #define PathRenameExtension PathRenameExtension_instead_use_PathCchRenameExtension; 112 #define PathRenameExtensionA PathRenameExtension_instead_use_PathCchRenameExtension; 113 #define PathRenameExtensionW PathRenameExtension_instead_use_PathCchRenameExtension; 114 #endif 115 #endif 116 #endif 117 118 #ifdef __cplusplus 119 } 120 #endif 121 122 #ifdef __cplusplus 123 124 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP) 125 __CRT_INLINE WINBOOL PathIsUNCEx (PWSTR path, PWSTR *pserver) { 126 return PathIsUNCEx (const_cast<PCWSTR> (path), const_cast<PCWSTR *> (pserver)); 127 } 128 129 __CRT_INLINE HRESULT PathCchSkipRoot (PWSTR path, PWSTR *prootend) { 130 return PathCchSkipRoot (const_cast<PCWSTR> (path), const_cast<PCWSTR *> (prootend)); 131 } 132 133 __CRT_INLINE HRESULT PathCchFindExtension (PWSTR path, size_t n, PWSTR *pext) { 134 return PathCchFindExtension (const_cast<PCWSTR> (path), n, const_cast<PCWSTR *> (pext)); 135 } 136 #endif 137 #endif