CFURLPriv.h
1 /* CFURLPriv.h 2 Copyright (c) 2008-2019, Apple Inc. and the Swift project authors 3 4 Portions Copyright (c) 2014-2019, Apple Inc. and the Swift project authors 5 Licensed under Apache License v2.0 with Runtime Library Exception 6 See http://swift.org/LICENSE.txt for license information 7 See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors 8 Responsibility: Jim Luther/Chris Linn 9 */ 10 11 #if !defined(__COREFOUNDATION_CFURLPRIV__) 12 #define __COREFOUNDATION_CFURLPRIV__ 1 13 14 #include <CoreFoundation/CFBase.h> 15 #include <CoreFoundation/CFError.h> 16 #include <CoreFoundation/CFArray.h> 17 #include <CoreFoundation/CFDictionary.h> 18 #include <CoreFoundation/CFString.h> 19 #include <CoreFoundation/CFURL.h> 20 #include <CoreFoundation/CFDate.h> 21 #if TARGET_OS_MAC 22 #include <sys/mount.h> 23 #endif 24 25 CF_EXTERN_C_BEGIN 26 27 /* Like CFURLGetBytes(), but allows the output encoding to be specified. */ 28 CF_EXPORT 29 CFIndex CFURLGetBytesUsingEncoding(CFURLRef url, UInt8 *buffer, CFIndex bufferLength, CFStringEncoding encoding); 30 31 #pragma mark - FileURL 32 33 // The kCFURLxxxxError enums are error codes in the Cocoa error domain and they mirror the exact same codes in <Foundation/FoundationErrors.h> (i.e. kCFURLReadNoPermissionError = NSFileReadNoPermissionError = 257). They were added to CFURLPriv.h so that CarbonCore and later CoreServicesInternal could return these error codes in the Cocoa error domain. If your code links with Foundation, you should use the codes in <Foundation/FoundationErrors.h>, not these codes. 34 enum { 35 // Resource I/O related errors, with kCFErrorURLKey containing URL 36 kCFURLNoSuchResourceError = 4, // Attempt to do a file system operation on a non-existent file 37 kCFURLResourceLockingError = 255, // Couldn't get a lock on file 38 kCFURLReadUnknownError = 256, // Read error (reason unknown) 39 kCFURLReadNoPermissionError = 257, // Read error (permission problem) 40 kCFURLReadInvalidResourceNameError = 258, // Read error (invalid file name) 41 kCFURLReadCorruptResourceError = 259, // Read error (file corrupt, bad format, etc) 42 kCFURLReadNoSuchResourceError = 260, // Read error (no such file) 43 kCFURLReadInapplicableStringEncodingError = 261, // Read error (string encoding not applicable) also kCFStringEncodingErrorKey 44 kCFURLReadUnsupportedSchemeError = 262, // Read error (unsupported URL scheme) 45 kCFURLReadTooLargeError = 263, // Read error (file too large) 46 kCFURLReadUnknownStringEncodingError = 264, // Read error (string encoding of file contents could not be determined) 47 kCFURLWriteUnknownError = 512, // Write error (reason unknown) 48 kCFURLWriteNoPermissionError = 513, // Write error (permission problem) 49 kCFURLWriteInvalidResourceNameError = 514, // Write error (invalid file name) 50 kCFURLWriteInapplicableStringEncodingError = 517, // Write error (string encoding not applicable) also kCFStringEncodingErrorKey 51 kCFURLWriteUnsupportedSchemeError = 518, // Write error (unsupported URL scheme) 52 kCFURLWriteOutOfSpaceError = 640, // Write error (out of storage space) 53 kCFURLWriteVolumeReadOnlyError = 642, // Write error (readonly volume) 54 } API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0)); 55 56 57 /* 58 Private File System Property Keys 59 */ 60 CF_EXPORT const CFStringRef _kCFURLPathKey API_DEPRECATED("Use the kCFURLPathKey or NSURLPathKey public property keys instead", macos(10.6,10.9), ios(4.0,7.0), watchos(2.0,2.0), tvos(9.0,9.0)); 61 /* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLPathKey or NSURLPathKey public property keys */ 62 63 CF_EXPORT const CFStringRef _kCFURLVolumeIDKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 64 /* Volume ID (CFNumber) */ 65 66 CF_EXPORT const CFStringRef _kCFURLInodeNumberKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 67 /* 64-bit inode number (the inode number from the file system) (CFNumber) */ 68 69 CF_EXPORT const CFStringRef _kCFURLFileIDKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 70 /* 64-bit file ID (for tracking a file by ID. This may or may not be the inode number) (CFNumber) */ 71 72 CF_EXPORT const CFStringRef _kCFURLParentDirectoryIDKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 73 /* 64-bit file ID (for tracking a parent directory by ID. This may or may not be the inode number) (CFNumber) */ 74 75 CF_EXPORT const CFStringRef _kCFURLDistinctLocalizedNameKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 76 /* The localized name, if it is distinct from the real name. Otherwise, NULL (CFString) */ 77 78 CF_EXPORT const CFStringRef _kCFURLNameExtensionKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 79 /* The name extension (CFString) */ 80 81 CF_EXPORT const CFStringRef _kCFURLFinderInfoKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 82 /* A 16-byte Finder Info structure immediately followed by a 16-byte Extended Finder Info structure (CFData) */ 83 84 CF_EXPORT const CFStringRef _kCFURLHFSTypeCodeKey API_AVAILABLE(macos(12.0), ios(15.0), watchos(8.0), tvos(15.0)); 85 /* A legacy 4-character code which identifies the file type. (CFNumber) */ 86 87 CF_EXPORT const CFStringRef _kCFURLIsUserNoDumpKey API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)); 88 /* True if resource's UF_NODUMP flag is set (CFBoolean) */ 89 90 CF_EXPORT const CFStringRef _kCFURLIsUserAppendKey API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)); 91 /* True if resource's UF_APPEND flag is set (CFBoolean) */ 92 93 CF_EXPORT const CFStringRef _kCFURLIsUserOpaqueKey API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)); 94 /* True if resource's UF_OPAQUE flag is set (CFBoolean) */ 95 96 CF_EXPORT const CFStringRef _kCFURLIsCompressedKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 97 /* True if resource's data is transparently compressed by the system on its storage device (UF_COMPRESSED flag is set) (CFBoolean) */ 98 99 CF_EXPORT const CFStringRef _kCFURLIsUserTrackedKey API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)); 100 /* True if resource's UF_TRACKED flag is set (CFBoolean) */ 101 102 CF_EXPORT const CFStringRef _kCFURLIsUserDataVaultKey API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0), tvos(11.0)); 103 /* True if resource's UF_DATAVAULT flag is set (CFBoolean) */ 104 105 CF_EXPORT const CFStringRef _kCFURLIsSystemArchivedKey API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)); 106 /* True if resource's SF_ARCHIVED flag is set (CFBoolean) */ 107 108 CF_EXPORT const CFStringRef _kCFURLIsSystemAppendKey API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)); 109 /* True if resource's SF_APPEND flag is set (CFBoolean) */ 110 111 CF_EXPORT const CFStringRef _kCFURLIsRestrictedKey API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)); 112 /* True if resource is restricted (SF_RESTRICTED flag is set) (CFBoolean) */ 113 114 CF_EXPORT const CFStringRef _kCFURLIsSystemNoUnlinkKey API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)); 115 /* True if resource's SF_NOUNLINK flag is set (CFBoolean) */ 116 117 CF_EXPORT const CFStringRef _kCFURLIsSystemFirmlinkKey API_AVAILABLE(macos(10.15), ios(13.0), watchos(6.0), tvos(13.0)); 118 /* True if resource's SF_FIRMLINK flag is set (Read-only, value type CFBoolean) */ 119 120 CF_EXPORT const CFStringRef _kCFURLIsSystemDatalessFaultKey API_AVAILABLE(macos(10.15), ios(13.0), watchos(6.0), tvos(13.0)); 121 /* True if resource's SF_DATALESS flag is set (Read-only, value type CFBoolean) */ 122 123 CF_EXPORT const CFStringRef _kCFURLFileFlagsKey API_AVAILABLE(macos(10.15), ios(13.0), watchos(6.0), tvos(13.0)); 124 /* file flags from ATTR_CMN_FLAGS (same as stat(2)'s st_flags). (Read-only, UInt32 CFNumber) */ 125 126 CF_EXPORT const CFStringRef _kCFURLGenerationCountKey API_AVAILABLE(macos(10.15), ios(13.0), watchos(6.0), tvos(13.0)); 127 /* the generation count from ATTR_CMN_GEN_COUNT. (Read-only, UInt32 CFNumber) */ 128 129 CF_EXPORT const CFStringRef _kCFURLIsApplicationKey API_DEPRECATED("Use kCFURLIsApplicationKey (API) instead", macos(10.6,10.11), ios(4.0,9.0), watchos(2.0,2.0), tvos(9.0,9.0)); 130 /* Deprecated and scheduled for removal in 10.12/10.0 - Use the kCFURLIsApplicationKey or NSURLIsApplicationKey public property keys */ 131 132 CF_EXPORT const CFStringRef _kCFURLApplicationIsAppletKey API_AVAILABLE(macos(10.11)) API_UNAVAILABLE(ios, watchos, tvos); 133 /* The item is an OSA or Automator applet. Only applies to applications. (Read-only, value type CFBoolean) */ 134 135 CF_EXPORT const CFStringRef _kCFURLApplicationIsPlaceholderKey API_AVAILABLE(macos(11.2), ios(14.2), watchos(7.2), tvos(14.2)); 136 /* The item is a placeholder while an app installs or is an uninstalled iOS system app. Only applies to applications. (Read-only, value type CFBoolean) */ 137 138 CF_EXPORT const CFStringRef _kCFURLApplicationIsBetaKey API_AVAILABLE(macos(12.0), ios(15.0), watchos(8.0), tvos(15.0)); 139 /* The item is a TestFlight beta app. (Read-only, value type CFBoolean) */ 140 141 CF_EXPORT const CFStringRef _kCFURLApplicationHasSupportedFormatKey API_AVAILABLE(macos(10.11)) API_UNAVAILABLE(ios, watchos, tvos); 142 /* The item is an application that can be executed on the current system. (Read-only, value type CFBoolean) */ 143 144 CF_EXPORT const CFStringRef _kCFURLCanSetHiddenExtensionKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 145 /* True if the filename extension can be hidden or unhidden (CFBoolean) */ 146 147 CF_EXPORT const CFStringRef _kCFURLIsReadableKey API_DEPRECATED("Use the kCFURLIsReadableKey or NSURLIsReadableKey public property keys", macos(10.6,10.9), ios(4.0,7.0), watchos(2.0,2.0), tvos(9.0,9.0)); 148 /* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLIsReadableKey or NSURLIsReadableKey public property keys */ 149 /* never implemented and scheduled for removal in 10.10/8.0 */CF_EXPORT const CFStringRef _kCFURLUserCanReadKey API_DEPRECATED("Not supported", macos(10.0,10.6), ios(2.0,4.0), watchos(2.0,2.0), tvos(9.0,9.0)); 150 151 CF_EXPORT const CFStringRef _kCFURLIsWriteableKey API_DEPRECATED("Use the kCFURLIsWritableKey or NSURLIsWritableKey public property keys", macos(10.6,10.9), ios(4.0,7.0), watchos(2.0,2.0), tvos(9.0,9.0)); 152 /* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLIsWritableKey or NSURLIsWritableKey public property keys */ 153 /* never implemented and scheduled for removal in 10.10/8.0 */CF_EXPORT const CFStringRef _kCFURLUserCanWriteKey API_DEPRECATED("Not supported", macos(10.0,10.6), ios(2.0,4.0), watchos(2.0,2.0), tvos(9.0,9.0)); 154 155 CF_EXPORT const CFStringRef _kCFURLIsExecutableKey API_DEPRECATED("Use the kCFURLIsExecutableKey or NSURLIsExecutableKey public property keys", macos(10.6,10.9), ios(4.0,7.0), watchos(2.0,2.0), tvos(9.0,9.0)); 156 /* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLIsExecutableKey or NSURLIsExecutableKey public property keys */ 157 /* never implemented and scheduled for removal in 10.10/8.0 */CF_EXPORT const CFStringRef _kCFURLUserCanExecuteKey API_DEPRECATED("Not supported", macos(10.0,10.6), ios(2.0,4.0), watchos(2.0,2.0), tvos(9.0,9.0)); 158 159 CF_EXPORT const CFStringRef _kCFURLParentDirectoryIsVolumeRootKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 160 /* True if the parent directory is the root of a volume (CFBoolean) */ 161 162 CF_EXPORT const CFStringRef _kCFURLFileSecurityKey API_DEPRECATED("Use the kCFURLFileSecurityKey or NSURLFileSecurityKey public property keys", macos(10.6,10.9), ios(4.0,7.0), watchos(2.0,2.0), tvos(9.0,9.0)); 163 /* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLFileSecurityKey or NSURLFileSecurityKey public property keys */ 164 165 CF_EXPORT const CFStringRef _kCFURLFileSizeOfResourceForkKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 166 /* Size in bytes of the resource fork (CFNumber) */ 167 168 CF_EXPORT const CFStringRef _kCFURLFileAllocatedSizeOfResourceForkKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 169 /* Size in bytes of the blocks allocated for the resource fork (CFNumber) */ 170 171 CF_EXPORT const CFStringRef _kCFURLEffectiveIconImageDataKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 172 /* Icon image data, i.e. raw pixel data (CFData) */ 173 174 CF_EXPORT const CFStringRef _kCFURLTypeBindingKey API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0)); 175 /* Type binding for icon (Read-only, value type CFData) */ 176 177 CF_EXPORT const CFStringRef _kCFURLCustomIconImageDataKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 178 /* Icon image data of the item's custom icon, if any (CFData) */ 179 180 CF_EXPORT const CFStringRef _kCFURLEffectiveIconFlattenedReferenceDataKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 181 /* Icon flattened reference, suitable for cheaply sharing the effective icon reference across processess (CFData) */ 182 183 CF_EXPORT const CFStringRef _kCFURLBundleIdentifierKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 184 /* If resource is a bundle, the bundle identifier (CFString) */ 185 186 CF_EXPORT const CFStringRef _kCFURLVersionKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 187 /* If resource is a bundle, the bundle version (CFBundleVersion) as a string (CFString) */ 188 189 CF_EXPORT const CFStringRef _kCFURLShortVersionStringKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 190 /* If resource is a bundle, the bundle short version (CFBundleShortVersionString) as a string (CFString) */ 191 192 CF_EXPORT const CFStringRef _kCFURLOwnerIDKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 193 /* 32-bit owner ID (uid_t). (CFNumber) Note: Almost all clients should use the kCFURLFileSecurityKey or NSURLFileSecurityKey public property keys and CFFileSecurityGetOwner() instead of this. */ 194 195 CF_EXPORT const CFStringRef _kCFURLGroupIDKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 196 /* 32-bit group ID (gid_t) (CFNumber) Note: Almost all clients should use the kCFURLFileSecurityKey or NSURLFileSecurityKey public property keys and CFFileSecurityGetGroup() instead of this. */ 197 198 CF_EXPORT const CFStringRef _kCFURLStatModeKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 199 /* 32-bit group ID (mode_t) (CFNumber) Note: Almost all clients should use the kCFURLFileSecurityKey or NSURLFileSecurityKey public property keys and CFFileSecurityGetMode() instead of this. */ 200 201 /* To determine which dictionary to request from _kCFURLLocalizedNameDictionaryKey or _kCFURLLocalizedNameWithExtensionsHiddenDictionaryKey, you can consult _LSGetShowAllExtensionsPreference() on macOS. On iOS, extensions are always hidden. */ 202 203 CF_EXPORT const CFStringRef _kCFURLLocalizedNameDictionaryKey API_AVAILABLE(macos(10.7), ios(9.0), watchos(2.0), tvos(9.0)); 204 /* For items with localized display names, the dictionary of all available localizations. The keys are the cannonical locale strings for the available localizations. (CFDictionary) */ 205 206 CF_EXPORT const CFStringRef _kCFURLLocalizedNameWithExtensionsHiddenDictionaryKey API_AVAILABLE(macosx(10.13), ios(11.0), watchos(4.0), tvos(11.0)); 207 /* For items with localized display names, the dictionary of all available localizations with extensions hidden if safe. The keys are the cannonical locale strings for the available localizations. (CFDictionary) */ 208 209 CF_EXPORT const CFStringRef _kCFURLLocalizedTypeDescriptionDictionaryKey API_AVAILABLE(macos(10.7), ios(9.0), watchos(2.0), tvos(9.0)); 210 /* The dictionary of all available localizations of the item kind string. The keys are the cannonical locale strings for the available localizations. (CFDictionary) */ 211 212 CF_EXPORT const CFStringRef _kCFURLApplicationCategoriesKey API_AVAILABLE(macos(10.7)) API_UNAVAILABLE(ios, watchos, tvos); 213 /* The array of category UTI strings associated with the url. (CFArray) */ 214 215 CF_EXPORT const CFStringRef _kCFURLApplicationHighResolutionModeIsMagnifiedKey API_AVAILABLE(macos(10.7)) API_UNAVAILABLE(ios, watchos, tvos); 216 /* True if the app runs with magnified 1x graphics on a 2x display (Per-user, CFBoolean) */ 217 218 CF_EXPORT const CFStringRef _kCFURLCanSetApplicationHighResolutionModeIsMagnifiedKey API_AVAILABLE(macos(10.7)) API_UNAVAILABLE(ios, watchos, tvos); 219 /* True if the app can run in either magnified or native resolution modes (Read only, CFBoolean) */ 220 221 CF_EXPORT const CFStringRef _kCFURLWriterBundleIdentifierKey API_AVAILABLE(macos(10.8)) API_UNAVAILABLE(ios, watchos, tvos); 222 /* The bundle identifier of the process writing to this object (Read-write, value type CFString) */ 223 224 CF_EXPORT const CFStringRef _kCFURLApplicationNapIsDisabledKey API_AVAILABLE(macos(10.9)) API_UNAVAILABLE(ios, watchos, tvos); 225 /* True if app nap is disabled (Applications only, Per-user, CFBoolean) */ 226 227 CF_EXPORT const CFStringRef _kCFURLCanSetApplicationNapIsDisabledKey API_AVAILABLE(macos(10.9)) API_UNAVAILABLE(ios, watchos, tvos); 228 /* True if the ApplicationNapIsDisabled property value can be changed (Applications only, Read only, CFBoolean) */ 229 230 CF_EXPORT const CFStringRef _kCFURLCanSetStrongBindingKey API_AVAILABLE(macos(10.11)) API_UNAVAILABLE(ios, watchos, tvos); 231 /* True if the strong binding can be changed (Read only, CFBoolean) */ 232 233 CF_EXPORT const CFStringRef _kCFURLStrongBindingKey API_AVAILABLE(macos(10.11)) API_UNAVAILABLE(ios, watchos, tvos); 234 /* The application to which the file is strongly bound (Read-write, value type CFURL) */ 235 236 CF_EXPORT const CFStringRef _kCFURLArchitecturesValidOnCurrentSystemKey API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)); 237 /* Array of CFStringRefs, each element an architecture identifier. The array includes the list of executable architectures found in the application bundle's executable that can be executed on the current system. (Read-only, value type CFArray of CFStrings) */ 238 239 CF_EXPORT 240 const CFStringRef _kCFURLApplicationArchitecturesKey API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)); 241 /* The complete list of executable architectures found in the application bundle's executable (Read-only, value type CFArray of CFString) */ 242 243 CF_EXPORT 244 const CFStringRef _kCFURLApplicationSupportedRegionsKey API_AVAILABLE(macos(10.14), ios(12.0), watchos(5.0), tvos(12.0)); 245 /* The complete list of regions supported by the application as found in the application bundle’s Info.plist (Read-only, value type CFArray of CFString) */ 246 247 CF_EXPORT const CFStringRef _kCFURLFaultLogicalFileIsHiddenKey API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)); 248 /* True if the fault logical file is hidden. (Read only, CFBoolean) */ 249 250 CF_EXPORT const CFStringRef _kCFURLLocalizedNameComponentsKey API_AVAILABLE(macosx(10.13), ios(11.0), watchos(4.0), tvos(11.0)); 251 /* An array containing the base name of the file and (if present) the extension to be used for display. Does not include extra Unicode visual ordering characters added by the system. For Finder use. (Read-only, value type CFArray of CFStrings) */ 252 253 CF_EXPORT const CFStringRef _kCFURLApplicationPrefersExternalGPUKey API_AVAILABLE(macos(10.14)) API_UNAVAILABLE(ios, watchos, tvos); 254 /* Default is false. True means the application will be steered towards the eGPU regardless of which displays it is attached to. (Read-write, CFBoolean) */ 255 256 CF_EXPORT const CFStringRef _kCFURLCanSetApplicationPrefersExternalGPUKey API_AVAILABLE(macos(10.14)) API_UNAVAILABLE(ios, watchos, tvos); 257 /* False if app’s Info.plist specifies a eGPU policy, True if app does not specify an policy. Finder does not show a checkbox when this value is false. (Read-only, CFBoolean) */ 258 259 #if !RC_HIDE_J316 260 CF_EXPORT const CFStringRef _kCFURLApplicationPrefersSafeApertureSystemFullScreenCompatibilityKey API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, watchos, tvos); 261 CF_EXPORT const CFStringRef _kCFURLApplicationPrefersSafeApertureAppFullScreenCompatibilityKey API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, watchos, tvos); 262 CF_EXPORT const CFStringRef _kCFURLApplicationPrefersSafeApertureWindowedCompatibilityKey API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, watchos, tvos); 263 CF_EXPORT const CFStringRef _kCFURLCanSetApplicationPrefersSafeApertureWindowedCompatibilityKey API_AVAILABLE(macos(12.0)) API_UNAVAILABLE(ios, watchos, tvos); 264 #endif // RC_HIDE_J316 265 266 CF_EXPORT const CFStringRef _kCFURLApplicationDeviceManagementPolicyKey API_AVAILABLE(macos(10.15), ios(13.0), watchos(6.0), tvos(13.0)); 267 /* For app bundle URLs, value is the Device Management framework's policy for the application. If the value is unavailable, returns DMFPolicyOK. For non-app URLs, value is nil. The calling process must be properly entitled with the Device Management framework to use this property. (Read-only, value type CFNumber) */ 268 269 CF_EXPORT const CFStringRef _kCFURLIsExcludedFromCloudBackupKey API_AVAILABLE(macos(10.14), ios(12.0), watchos(5.0), tvos(12.0)); 270 /* true if resource should be excluded from iCloud backups, false otherwise (Read-write, value type CFBoolean). */ 271 272 CF_EXPORT const CFStringRef _kCFURLIsExcludedFromUnencryptedBackupKey API_AVAILABLE(macos(10.14), ios(12.0), watchos(5.0), tvos(12.0)); 273 /* true if resource should be excluded from unencrypted backups, false otherwise (Read-write, value type CFBoolean). */ 274 275 CF_EXPORT const CFStringRef _kCFURLDeviceRefNumKey API_AVAILABLE(macos(10.15)) API_UNAVAILABLE(ios, watchos, tvos); 276 /* an unique per-volume non-persistent identifier for volumes (much like _kCFURLVolumeRefNumKey) that is also unique per-device when the volume is really two devices (i.e. ROSP) (64-bit integer CFNumber). */ 277 278 CF_EXPORT const CFStringRef _kCFURLContentTypeKey API_AVAILABLE(macos(10.16), ios(14.0), watchos(7.0), tvos(14.0)); 279 /* the file type of the resource (CFTypeRef/UTType *). */ 280 281 /* Additional volume properties */ 282 283 CF_EXPORT const CFStringRef _kCFURLVolumeRefNumKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 284 /* The Carbon File Manager's FSVolumeRefNum for the resource volume (CFNumber) */ 285 286 CF_EXPORT const CFStringRef _kCFURLVolumeUUIDStringKey API_DEPRECATED("Use the kCFURLVolumeUUIDStringKey or NSURLVolumeUUIDStringKey public property keys", macos(10.6,10.9), ios(4.0,7.0), watchos(2.0,2.0), tvos(9.0,9.0)); 287 /* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLVolumeUUIDStringKey or NSURLVolumeUUIDStringKey public property keys */ 288 289 CF_EXPORT const CFStringRef _kCFURLVolumeCreationDateKey API_DEPRECATED("Use the kCFURLVolumeCreationDateKey or NSURLVolumeCreationDateKey public property keys", macos(10.6,10.9), ios(4.0,7.0), watchos(2.0,2.0), tvos(9.0,9.0)); 290 /* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLVolumeCreationDateKey or NSURLVolumeCreationDateKey public property keys */ 291 292 CF_EXPORT const CFStringRef _kCFURLVolumeIsLocalKey API_DEPRECATED("Use the kCFURLVolumeIsLocalKey or NSURLVolumeIsLocalKey public property keys", macos(10.6,10.9), ios(4.0,7.0), watchos(2.0,2.0), tvos(9.0,9.0)); 293 /* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLVolumeIsLocalKey or NSURLVolumeIsLocalKey public property keys */ 294 295 CF_EXPORT const CFStringRef _kCFURLVolumeIsAutomountKey API_DEPRECATED("Use the kCFURLVolumeIsAutomountedKey or NSURLVolumeIsAutomountedKey public property keys", macos(10.6,10.9), ios(4.0,7.0), watchos(2.0,2.0), tvos(9.0,9.0)); 296 /* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLVolumeIsAutomountedKey or NSURLVolumeIsAutomountedKey public property keys */ 297 298 CF_EXPORT const CFStringRef _kCFURLVolumeDontBrowseKey API_DEPRECATED("Use the kCFURLVolumeIsBrowsableKey or NSURLVolumeIsBrowsableKey public property keys (Note: value is inverse of _kCFURLVolumeDontBrowseKey)", macos(10.6,10.9), ios(4.0,7.0), watchos(2.0,2.0), tvos(9.0,9.0)); 299 /* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLVolumeIsBrowsableKey or NSURLVolumeIsBrowsableKey public property keys (Note: value is inverse of _kCFURLVolumeDontBrowseKey) */ 300 301 CF_EXPORT const CFStringRef _kCFURLVolumeIsReadOnlyKey API_DEPRECATED("Use the kCFURLVolumeIsReadOnlyKey or NSURLVolumeIsReadOnlyKey public property keys", macos(10.6,10.9), ios(4.0,7.0), watchos(2.0,2.0), tvos(9.0,9.0)); 302 /* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLVolumeIsReadOnlyKey or NSURLVolumeIsReadOnlyKey public property keys */ 303 304 CF_EXPORT const CFStringRef _kCFURLVolumeIsQuarantinedKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 305 /* Mounted quarantined (CFBoolean) */ 306 307 CF_EXPORT const CFStringRef _kCFURLVolumeIsEjectableKey API_DEPRECATED("Use the kCFURLVolumeIsEjectableKey or NSURLVolumeIsEjectableKey public property keys", macos(10.6,10.9), ios(4.0,7.0), watchos(2.0,2.0), tvos(9.0,9.0)); 308 /* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLVolumeIsEjectableKey or NSURLVolumeIsEjectableKey public property keys */ 309 310 CF_EXPORT const CFStringRef _kCFURLVolumeIsRemovableKey API_DEPRECATED("Use the kCFURLVolumeIsRemovableKey or NSURLVolumeIsRemovableKey public property keys", macos(10.6,10.9), ios(4.0,7.0), watchos(2.0,2.0), tvos(9.0,9.0)); 311 /* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLVolumeIsRemovableKey or NSURLVolumeIsRemovableKey public property keys */ 312 313 CF_EXPORT const CFStringRef _kCFURLVolumeIsInternalKey API_DEPRECATED("Use the kCFURLVolumeIsInternalKey or NSURLVolumeIsInternalKey public property keys (Note: this has slightly different behavior than the public VolumeIsInternal key)", macos(10.6,10.9), ios(4.0,7.0), watchos(2.0,2.0), tvos(9.0,9.0)); 314 /* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLVolumeIsInternalKey or NSURLVolumeIsInternalKey public property keys (Note: this has slightly different behavior than the public VolumeIsInternal key) */ 315 316 CF_EXPORT const CFStringRef _kCFURLVolumeIsExternalKey API_DEPRECATED("Use the kCFURLVolumeIsInternalKey or NSURLVolumeIsInternalKey public property keys (Note: this has slightly different behavior than the public VolumeIsInternal key)", macos(10.6,10.9), ios(4.0,7.0), watchos(2.0,2.0), tvos(9.0,9.0)); 317 /* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLVolumeIsInternalKey or NSURLVolumeIsInternalKey public property keys (Note: this has slightly different behavior than the public VolumeIsInternal key) */ 318 319 CF_EXPORT const CFStringRef _kCFURLVolumeIsDiskImageKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 320 /* Volume is a mounted disk image (CFBoolean) */ 321 322 CF_EXPORT const CFStringRef _kCFURLDiskImageBackingURLKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 323 /* If volume is a mounted disk image, the URL of the backing disk image (CFURL) */ 324 325 CF_EXPORT const CFStringRef _kCFURLVolumeIsFileVaultKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 326 /* Volume uses File Vault encryption (CFBoolean) */ 327 328 CF_EXPORT const CFStringRef _kCFURLVolumeSupportsFileProtectionKey API_DEPRECATED("Use the kCFURLVolumeSupportsFileProtectionKey or NSURLVolumeSupportsFileProtectionKey public property keys", macosx(10.16, 10.16), ios(14.0, 14.0), watchos(7.0, 7.0), tvos(14.0, 14.0)); 329 /* true if the volume supports data protection for files. (Read-only, value type CFBoolean) */ 330 331 CF_EXPORT const CFStringRef _kCFURLVolumeIsiDiskKey API_DEPRECATED("No supported", macos(10.6,10.9), ios(4.0,7.0), watchos(2.0,2.0), tvos(9.0,9.0)); 332 /* Deprecated and scheduled for removal in 10.10/8.0 - there are no more iDisks */ 333 334 CF_EXPORT const CFStringRef _kCFURLVolumeiDiskUserNameKey API_DEPRECATED("Not supported", macos(10.6,10.9), ios(4.0,7.0), watchos(2.0,2.0), tvos(9.0,9.0)); 335 /* Deprecated and scheduled for removal in 10.10/8.0 - there are no more iDisks */ 336 337 CF_EXPORT const CFStringRef _kCFURLVolumeIsLocaliDiskMirrorKey API_DEPRECATED("Not supported", macos(10.6,10.9), ios(4.0,7.0), watchos(2.0,2.0), tvos(9.0,9.0)); 338 /* Deprecated and scheduled for removal in 10.10/8.0 - there are no more iDisks */ 339 340 CF_EXPORT const CFStringRef _kCFURLVolumeIsiPodKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 341 /* Volume is on an iPod (CFBoolean) */ 342 343 CF_EXPORT const CFStringRef _kCFURLVolumeIsCDKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 344 /* Volume is a CD (audio or CD-ROM). (CFBoolean) */ 345 346 CF_EXPORT const CFStringRef _kCFURLVolumeIsDVDKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 347 /* Volume is a DVD (CFBoolean) */ 348 349 CF_EXPORT const CFStringRef _kCFURLVolumeIsDeviceFileSystemKey API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)); 350 /* Volume is devfs (CFBoolean) */ 351 352 CF_EXPORT const CFStringRef _kCFURLVolumeIsHFSStandardKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 353 /* Volume is HFS standard (which includes AFP volumes). Directory IDs, but not file IDs, can be looked up. (CFBoolean) */ 354 355 CF_EXPORT const CFStringRef _kCFURLVolumeIOMediaIconFamilyNameKey API_AVAILABLE(macos(10.9)) API_UNAVAILABLE(ios, watchos, tvos); 356 /* Volume's IOMediaIconFamilyName. (CFStringRef) */ 357 358 CF_EXPORT const CFStringRef _kCFURLVolumeIOMediaIconBundleIdentifierKey API_AVAILABLE(macos(10.9)) API_UNAVAILABLE(ios, watchos, tvos); 359 /* Volume's IOMediaIconBundleIdentifier. (CFStringRef) */ 360 361 CF_EXPORT const CFStringRef _kCFURLVolumeQuarantinePropertiesKey API_AVAILABLE(macos(10.10)) API_UNAVAILABLE(ios, watchos, tvos); 362 /* The quarantine properties for the volume on which the resource resides as defined in LSQuarantine.h.=To remove quarantine information from a volume, pass kCFNull as the value when setting this property. (Read-write, value type CFDictionary) */ 363 364 CF_EXPORT const CFStringRef _kCFURLVolumeOpenFolderURLKey API_AVAILABLE(macos(10.10)) API_UNAVAILABLE(ios, watchos, tvos); 365 /* Returns a URL to the folder the Finder should open when a HFS volume is mounted, or NULL if there is none. (Read-only, value type CFURL) */ 366 367 CF_EXPORT const CFStringRef _kCFURLResolvedFromBookmarkDataKey API_DEPRECATED("Not supported", macos(10.6,10.9), ios(4.0,7.0), watchos(2.0,2.0), tvos(9.0,9.0)); 368 /* Deprecated and scheduled for removal later in 10.9/7.0 since it is unused (*/ 369 370 CF_EXPORT const CFStringRef _kCFURLVolumeMountPointStringKey API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 371 /* the volume mountpoint string (Read-only, value type CFString) */ 372 373 CF_EXPORT const CFStringRef _kCFURLVolumeDeviceIDKey API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)); 374 /* the volume's dev_t (Read-only, value type CFNumber) */ 375 376 CF_EXPORT const CFStringRef _kCFURLVolumeIsTimeMachineKey API_AVAILABLE(macos(10.11)) API_UNAVAILABLE(ios, watchos, tvos); 377 /* Volume is the Time Machine volume (Read-write, value type CFBoolean) */ 378 379 CF_EXPORT const CFStringRef _kCFURLVolumeIsAirportKey API_AVAILABLE(macos(10.11)) API_UNAVAILABLE(ios, watchos, tvos); 380 /* Volume is an airport volume (Read-write, value type CFBoolean) */ 381 382 CF_EXPORT const CFStringRef _kCFURLVolumeIsVideoDiskKey API_AVAILABLE(macos(10.13)) API_UNAVAILABLE(ios, watchos, tvos); 383 /* Volume is video disk (Read-only, value type CFBoolean) */ 384 385 CF_EXPORT const CFStringRef _kCFURLVolumeIsDVDVideoKey API_AVAILABLE(macos(10.13)) API_UNAVAILABLE(ios, watchos, tvos); 386 /* Volume is DVD video (Read-only, value type CFBoolean) */ 387 388 CF_EXPORT const CFStringRef _kCFURLVolumeIsBDVideoKey API_AVAILABLE(macos(10.13)) API_UNAVAILABLE(ios, watchos, tvos); 389 /* Volume is BD video (Read-only, value type CFBoolean) */ 390 391 CF_EXPORT const CFStringRef _kCFURLVolumeIsMobileTimeMachineKey API_AVAILABLE(macos(10.13)) API_UNAVAILABLE(ios, watchos, tvos); 392 /* Volume is mobile time machine (Read-only, value type CFBoolean) */ 393 394 CF_EXPORT const CFStringRef _kCFURLVolumeIsNetworkOpticalKey API_AVAILABLE(macos(10.13)) API_UNAVAILABLE(ios, watchos, tvos); 395 /* Volume is network optical (Read-only, value type CFBoolean) */ 396 397 CF_EXPORT const CFStringRef _kCFURLCompleteMountURLKey API_DEPRECATED("Use the kCFURLVolumeURLForRemountingKey or NSURLVolumeURLForRemountingKey public property keys", macos(10.6,10.9), ios(4.0,7.0), watchos(2.0,2.0), tvos(9.0,9.0)); 398 /* Deprecated and scheduled for removal in 10.10/8.0 - Use the kCFURLVolumeURLForRemountingKey or NSURLVolumeURLForRemountingKey public property keys */ 399 400 CF_EXPORT const CFStringRef _kCFURLUbiquitousItemDownloadRequestedKey API_AVAILABLE(macos(10.9), ios(7.0), watchos(2.0), tvos(9.0)); 401 /* Is this Ubiquity item scheduled for download? (this is also true for items that are already downloaded). Use startDownloadingUbiquitousItemAtURL:error: to make this true (Read-only, value type CFBoolean) */ 402 403 CF_EXPORT const CFStringRef _kCFURLCloudDocsPlaceholderDictionaryKey API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0)); 404 /* Returns the placeholder dictionary for a side-fault file (Read-only, value type CFDictionary) */ 405 406 CF_EXPORT const CFStringRef _kCFURLCloudDocsPlaceholderLogicalNameKey API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0)); 407 /* Returns the placeholder dictionary for a side-fault file (Read-only, value type CFString) */ 408 409 // Temporary holding place for future API. 410 411 CF_EXPORT const CFStringRef kCFURLUbiquitousItemDownloadRequestedKey API_AVAILABLE(macos(10.9), ios(7.0), watchos(2.0), tvos(9.0)); 412 /* Is this Ubiquity item scheduled for download? (this is also true for items that are already downloaded). Use startDownloadingUbiquitousItemAtURL:error: to make this true (Read-only, value type CFBoolean) */ 413 414 CF_EXPORT const CFStringRef kCFURLUbiquitousItemContainerDisplayNameKey API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0)); 415 /* Returns the localized name of the ubiquity container that contains this item (Read-only, value type CFString) */ 416 417 CF_EXPORT const CFStringRef kCFURLUbiquitousItemIsSharedKey; // true if the ubiquitous item is shared. (Read-only, value type boolean NSNumber) 418 419 CF_EXPORT const CFStringRef kCFURLUbiquitousSharedItemCurrentUserRoleKey API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)); // Replaced by kCFURLUbiquitousSharedItemCurrentUserRoleKey. 420 CF_EXPORT const CFStringRef kCFURLUbiquitousSharedItemRoleOwner API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)); // the current user is the owner of this shared item. 421 CF_EXPORT const CFStringRef kCFURLUbiquitousSharedItemRoleParticipant API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)); // the current user is a participant of this shared item. 422 423 CF_EXPORT const CFStringRef kCFURLUbiquitousSharedItemOwnerNameComponentsKey API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)); // returns a NSPersonNameComponents, or nil if the current user. (Read-only, value type NSPersonNameComponents) 424 CF_EXPORT const CFStringRef kCFURLUbiquitousSharedItemMostRecentEditorNameComponentsKey API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0)); // returns a NSPersonNameComponents for the most recent editro fo the file, or nil if the current user. (Read-only, value type NSPersonNameComponents) 425 426 CF_EXPORT const CFStringRef kCFURLUbiquitousSharedItemCurrentUserPermissionsKey API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0)); // returns the permissions for a participant of this shared item, or nil if not shared. (Read-only, value type NSString). Possible values below. 427 CF_EXPORT const CFStringRef kCFURLUbiquitousSharedItemPermissionsReadOnly API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0)); // participants are only allowed to read this item 428 CF_EXPORT const CFStringRef kCFURLUbiquitousSharedItemPermissionsReadWrite API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0)); // participants are allowed to both read and write this item 429 430 // Deprecated. Will be removed. 431 CF_EXPORT const CFStringRef kCFURLUbiquitousSharedItemRoleKey API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)); // Replaced by kCFURLUbiquitousSharedItemCurrentUserRoleKey. 432 CF_EXPORT const CFStringRef kCFURLUbiquitousSharedItemOwnerNameKey API_DEPRECATED("Replaced by kCFURLUbiquitousSharedItemOwnerNameComponentsKey", macos(10.11,10.11), ios(9.0,9.0), watchos(2.0,2.0), tvos(9.0,9.0)); 433 CF_EXPORT const CFStringRef kCFURLUbiquitousSharedItemPermissionsKey API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)); // returns the permissions for a participant of this shared item, or nil if not shared. (Read-only, value type NSString). Possible values below. 434 CF_EXPORT const CFStringRef kCFURLUbiquitousSharedItemReadOnlyPermissions API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)); 435 CF_EXPORT const CFStringRef kCFURLUbiquitousSharedItemReadWritePermissions API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)); 436 437 438 // these keys are defined here, not in CFURL.h, because they return NSImage values which can only be used by Foundation 439 CF_EXPORT const CFStringRef kCFURLThumbnailDictionaryKey API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0)); 440 CF_EXPORT const CFStringRef kCFURLThumbnailKey API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0)); 441 // The values of thumbnails in the dictionary returned by NSURLThumbnailDictionaryKey 442 CF_EXPORT const CFStringRef kCFThumbnail1024x1024SizeKey API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0)); 443 444 // This private key is only for the use of CFURLPromises and the URL cache code in CoreServicesInternal 445 CF_EXPORT const CFStringRef _kCFURLPromisePhysicalURLKey API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0)); 446 447 448 /* 449 Some common boolean properties can be accessed as a bitfield 450 for better performance -- see _CFURLGetResourcePropertyFlags() and 451 _CFURLCopyResourcePropertyValuesAndFlags(), below. 452 */ 453 enum { 454 kCFURLResourceIsRegularFile = 0x00000001, 455 kCFURLResourceIsDirectory = 0x00000002, 456 kCFURLResourceIsSymbolicLink = 0x00000004, 457 kCFURLResourceIsVolume = 0x00000008, 458 kCFURLResourceIsPackage = 0x00000010, 459 kCFURLResourceIsSystemImmutable = 0x00000020, 460 kCFURLResourceIsUserImmutable = 0x00000040, 461 kCFURLResourceIsHidden = 0x00000080, 462 kCFURLResourceHasHiddenExtension = 0x00000100, 463 kCFURLResourceIsApplication = 0x00000200, 464 kCFURLResourceIsCompressed = 0x00000400, 465 kCFURLResourceIsSystemCompressed API_DEPRECATED("Use kCFURLResourceIsCompressed instead", macos(10.6,10.9), ios(4.0,7.0), watchos(2.0,2.0), tvos(9.0,9.0)) 466 = 0x00000400, /* Deprecated and scheduled for removal in 10.10/8.0 - Use kCFURLResourceIsCompressed */ 467 kCFURLCanSetHiddenExtension = 0x00000800, 468 kCFURLResourceIsReadable = 0x00001000, 469 kCFURLResourceIsWriteable = 0x00002000, 470 kCFURLResourceIsExecutable = 0x00004000, /* execute files or search directories */ 471 kCFURLIsAliasFile = 0x00008000, 472 kCFURLIsMountTrigger = 0x00010000, 473 }; 474 typedef unsigned long long CFURLResourcePropertyFlags; 475 476 477 /* 478 _CFURLGetResourceFlags - Returns a bit array of resource flags in the "flags" 479 output parameter. Only flags whose corresponding bits are set in the "mask" parameter 480 are valid in the output bit array. Returns true on success, false if an error occurs. 481 Optional output error: the error is set to a valid CFErrorRef if and only if the function 482 returns false. A valid output error must be released by the caller. 483 */ 484 CF_EXPORT 485 Boolean _CFURLGetResourcePropertyFlags(CFURLRef url, CFURLResourcePropertyFlags mask, CFURLResourcePropertyFlags *flags, CFErrorRef *error) API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 486 487 #if TARGET_OS_MAC || TARGET_OS_IPHONE 488 /* 489 File resource properties which can be obtained with _CFURLCopyFilePropertyValuesAndFlags(). 490 */ 491 typedef CF_OPTIONS(unsigned long long, CFURLFilePropertyBitmap) { 492 kCFURLName = 0x0000000000000001, 493 kCFURLLinkCount = 0x0000000000000002, 494 kCFURLVolumeIdentifier = 0x0000000000000004, 495 kCFURLObjectIdentifier = 0x0000000000000008, 496 kCFURLCreationDate = 0x0000000000000010, 497 kCFURLContentModificationDate = 0x0000000000000020, 498 kCFURLAttributeModificationDate = 0x0000000000000040, 499 kCFURLFileSize = 0x0000000000000080, 500 kCFURLFileAllocatedSize = 0x0000000000000100, 501 kCFURLFileSizeOfResourceFork = 0x0000000000000200, 502 kCFURLFileAllocatedSizeOfResourceFork = 0x0000000000000400, 503 kCFURLFinderInfo = 0x0000000000000800, 504 kCFURLFileSecurity = 0x0000000000001000, 505 }; 506 507 /* 508 The structure where _CFURLCopyFilePropertyValuesAndFlags() returns file resource properties. 509 */ 510 struct _CFURLFilePropertyValues { 511 CFStringRef name; /* you are responsible for releasing this if you ask for it and get it */ 512 uint32_t linkCount; 513 uint64_t volumeIdentifier; 514 uint64_t objectIdentifier; 515 CFAbsoluteTime creationDate; 516 CFAbsoluteTime contentModificationDate; 517 CFAbsoluteTime attributeModificationDate; 518 uint64_t fileSize; 519 uint64_t fileAllocatedSize; 520 uint64_t fileSizeOfResourceFork; 521 uint64_t fileAllocatedSizeOfResourceFork; 522 uint8_t finderInfo[32]; 523 }; 524 typedef struct _CFURLFilePropertyValues _CFURLFilePropertyValues; 525 526 /* 527 _CFURLCopyResourcePropertyValuesAndFlags - Returns property values as simple types 528 whenever possible. Returns a bit array of resource flags in the "flags" 529 output parameter. Only flags whose corresponding bits are set in the "mask" parameter 530 are valid in the output bit array. Returns true on success, false if an error occurs. 531 Optional output error: the error is set to a valid CFErrorRef if and only if the function 532 returns false. A valid output error must be released by the caller. 533 */ 534 CF_EXPORT 535 Boolean _CFURLCopyResourcePropertyValuesAndFlags( CFURLRef url, CFURLFilePropertyBitmap requestProperties, CFURLFilePropertyBitmap *actualProperties, struct _CFURLFilePropertyValues *properties, CFURLResourcePropertyFlags propertyFlagsMask, CFURLResourcePropertyFlags *propertyFlags, CFErrorRef *error) API_AVAILABLE(macos(10.7), ios(4.0), watchos(2.0), tvos(9.0)); 536 #endif 537 538 /* 539 Volume property flags 540 */ 541 typedef CF_OPTIONS(unsigned long long, CFURLVolumePropertyFlags) { 542 kCFURLVolumeIsLocal = 0x1LL, // Local device (vs. network device) 543 kCFURLVolumeIsAutomount = 0x2LL, // Mounted by the automounter 544 kCFURLVolumeDontBrowse = 0x4LL, // Hidden from user browsing 545 kCFURLVolumeIsReadOnly = 0x8LL, // Mounted read-only 546 kCFURLVolumeIsQuarantined = 0x10LL, // Mounted with quarantine bit 547 kCFURLVolumeIsEjectable = 0x20LL, 548 kCFURLVolumeIsRemovable = 0x40LL, 549 kCFURLVolumeIsInternal = 0x80LL, 550 kCFURLVolumeIsExternal = 0x100LL, 551 kCFURLVolumeIsDiskImage = 0x200LL, 552 kCFURLVolumeIsFileVault = 0x400LL, 553 kCFURLVolumeIsLocaliDiskMirror API_DEPRECATED("iDisk no longer supported", macos(10.6,10.9), ios(4.0,7.0), watchos(2.0,2.0), tvos(9.0,9.0)) 554 = 0x800LL, // Deprecated and scheduled for removal in 10.10/8.0 - there are no more iDisks 555 kCFURLVolumeIsiPod = 0x1000LL, 556 kCFURLVolumeIsiDisk API_DEPRECATED("iDisk no longer supported", macos(10.6,10.9), ios(4.0,7.0), watchos(2.0,2.0), tvos(9.0,9.0)) 557 = 0x2000LL, // Deprecated and scheduled for removal in 10.10/8.0 - there are no more iDisks 558 kCFURLVolumeIsCD = 0x4000LL, 559 kCFURLVolumeIsDVD = 0x8000LL, 560 kCFURLVolumeIsDeviceFileSystem = 0x10000LL, 561 kCFURLVolumeIsTimeMachine API_AVAILABLE(macos(10.9)) API_UNAVAILABLE(ios, watchos, tvos) 562 = 0x20000LL, 563 kCFURLVolumeIsAirport API_AVAILABLE(macos(10.9)) API_UNAVAILABLE(ios, watchos, tvos) 564 = 0x40000LL, 565 kCFURLVolumeIsVideoDisk API_AVAILABLE(macos(10.9)) API_UNAVAILABLE(ios, watchos, tvos) 566 = 0x80000LL, 567 kCFURLVolumeIsDVDVideo API_AVAILABLE(macos(10.9)) API_UNAVAILABLE(ios, watchos, tvos) 568 = 0x100000LL, 569 kCFURLVolumeIsBDVideo API_AVAILABLE(macos(10.9)) API_UNAVAILABLE(ios, watchos, tvos) 570 = 0x200000LL, 571 kCFURLVolumeIsMobileTimeMachine API_AVAILABLE(macos(10.9)) API_UNAVAILABLE(ios, watchos, tvos) 572 = 0x400000LL, 573 kCFURLVolumeIsNetworkOptical API_AVAILABLE(macos(10.9)) API_UNAVAILABLE(ios, watchos, tvos) 574 = 0x800000LL, 575 kCFURLVolumeIsBeingRepaired API_AVAILABLE(macos(10.9)) API_UNAVAILABLE(ios, watchos, tvos) 576 = 0x1000000LL, 577 kCFURLVolumeIsBeingUnmounted API_AVAILABLE(macos(10.9)) API_UNAVAILABLE(ios, watchos, tvos) 578 = 0x2000000LL, 579 kCFURLVolumeIsRootFileSystem API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)) 580 = 0x4000000LL, 581 kCFURLVolumeIsEncrypted API_AVAILABLE(macos(10.11), ios(9.0), watchos(2.0), tvos(9.0)) 582 = 0x8000000LL, 583 kCFURLVolumeSupportsFileProtection API_AVAILABLE(macos(10.16), ios(14.0), watchos(7.0), tvos(14.0)) 584 = 0x10000000LL, 585 586 // IMPORTANT: The values of the following flags must stay in sync with the 587 // VolumeCapabilities flags in CarbonCore (FileIDTreeStorage.h) 588 kCFURLVolumeSupportsPersistentIDs = 0x100000000LL, 589 kCFURLVolumeSupportsSearchFS = 0x200000000LL, 590 kCFURLVolumeSupportsExchange = 0x400000000LL, 591 // reserved 0x800000000LL, 592 kCFURLVolumeSupportsSymbolicLinks = 0x1000000000LL, 593 kCFURLVolumeSupportsDenyModes = 0x2000000000LL, 594 kCFURLVolumeSupportsCopyFile = 0x4000000000LL, 595 kCFURLVolumeSupportsReadDirAttr = 0x8000000000LL, 596 kCFURLVolumeSupportsJournaling = 0x10000000000LL, 597 kCFURLVolumeSupportsRename = 0x20000000000LL, 598 kCFURLVolumeSupportsFastStatFS = 0x40000000000LL, 599 kCFURLVolumeSupportsCaseSensitiveNames = 0x80000000000LL, 600 kCFURLVolumeSupportsCasePreservedNames = 0x100000000000LL, 601 kCFURLVolumeSupportsFLock = 0x200000000000LL, 602 kCFURLVolumeHasNoRootDirectoryTimes = 0x400000000000LL, 603 kCFURLVolumeSupportsExtendedSecurity = 0x800000000000LL, 604 kCFURLVolumeSupports2TBFileSize = 0x1000000000000LL, 605 kCFURLVolumeSupportsHardLinks = 0x2000000000000LL, 606 kCFURLVolumeSupportsMandatoryByteRangeLocks = 0x4000000000000LL, 607 kCFURLVolumeSupportsPathFromID = 0x8000000000000LL, 608 // reserved 0x10000000000000LL, 609 kCFURLVolumeIsJournaling = 0x20000000000000LL, 610 kCFURLVolumeSupportsSparseFiles = 0x40000000000000LL, 611 kCFURLVolumeSupportsZeroRuns = 0x80000000000000LL, 612 kCFURLVolumeSupportsVolumeSizes = 0x100000000000000LL, 613 kCFURLVolumeSupportsRemoteEvents = 0x200000000000000LL, 614 kCFURLVolumeSupportsHiddenFiles = 0x400000000000000LL, 615 kCFURLVolumeSupportsDecmpFSCompression = 0x800000000000000LL, 616 kCFURLVolumeHas64BitObjectIDs = 0x1000000000000000LL, 617 kCFURLVolumeSupportsFileCloning API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0)) 618 = 0x2000000000000000LL, 619 kCFURLVolumeSupportsSwapRenaming API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0)) 620 = 0x4000000000000000LL, 621 kCFURLVolumeSupportsExclusiveRenaming API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0)) 622 = 0x8000000000000000LL, 623 kCFURLVolumePropertyFlagsAll = 0xffffffffffffffffLL 624 }; 625 626 627 /* 628 _CFURLGetVolumePropertyFlags - Returns a bit array of volume properties. 629 Only flags whose corresponding bits are set in the "mask" parameter are valid 630 in the output bit array. Returns true on success, false if an error occurs. 631 Optional output error: the error is set to a valid CFErrorRef if and only if the function 632 returns false. A valid output error must be released by the caller. 633 */ 634 CF_EXPORT 635 Boolean _CFURLGetVolumePropertyFlags(CFURLRef url, CFURLVolumePropertyFlags mask, CFURLVolumePropertyFlags *flags, CFErrorRef *error) API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 636 637 638 /* _CFURLCopyResourcePropertyForKeyFromCache works like CFURLCopyResourcePropertyForKey 639 only it never causes I/O. If the property value requested is cached (or known 640 to be not available) for the resource, return TRUE and the property value. The 641 property value returned could be NULL meaning that property is not available 642 for the resource. If the property value requested is not cached or the resource, 643 FALSE is returned. 644 645 Only for use by DesktopServices! 646 */ 647 CF_EXPORT 648 Boolean _CFURLCopyResourcePropertyForKeyFromCache(CFURLRef url, CFStringRef key, void *cfTypeRefValue) API_AVAILABLE(macos(10.8), ios(8.3), watchos(2.0), tvos(9.0)); 649 650 /* _CFURLCopyResourcePropertiesForKeysFromCache works like CFURLCopyResourcePropertiesForKeys 651 only it never causes I/O. If the property values requested are cached (or known 652 to be not available) for the resource, return a CFDictionary. Property values 653 not available for the resource are not included in the CFDictionary. 654 If the values requested are not cached, return NULL. 655 656 Only for use by DesktopServices! 657 */ 658 CF_EXPORT 659 CFDictionaryRef _CFURLCopyResourcePropertiesForKeysFromCache(CFURLRef url, CFArrayRef keys) API_AVAILABLE(macos(10.8), ios(8.3), watchos(2.0), tvos(9.0)); 660 661 /* _CFURLCacheResourcePropertyForKey works like CFURLCopyResourcePropertyForKey 662 only it does not return the property value -- it just ensures the value is cached. 663 If no errors occur, TRUE is returned. If an error occurs, FALSE is returned 664 and the optional output error is set to a valid CFErrorRef (which must be 665 released by the caller. 666 667 Only for use by DesktopServices! 668 */ 669 CF_EXPORT 670 Boolean _CFURLCacheResourcePropertyForKey(CFURLRef url, CFStringRef key, CFErrorRef *error) API_AVAILABLE(macos(10.8), ios(8.3), watchos(2.0), tvos(9.0)); 671 672 /* _CFURLCacheResourcePropertiesForKeys works like CFURLCopyResourcePropertiesForKeys 673 only it does not return the property values -- it just ensures the values is cached. 674 If no errors occur, TRUE is returned. If an error occurs, FALSE is returned 675 and the optional output error is set to a valid CFErrorRef (which must be 676 released by the caller. 677 678 Only for use by DesktopServices! 679 */ 680 CF_EXPORT 681 Boolean _CFURLCacheResourcePropertiesForKeys(CFURLRef url, CFArrayRef keys, CFErrorRef *error) API_AVAILABLE(macos(10.8), ios(8.3), watchos(2.0), tvos(9.0)); 682 683 /* 684 _CFURLCreateDisplayPathComponentsArray() 685 686 Summary: 687 _FileURLCreateDisplayPathComponentsArray creates a CFArray of 688 CFURLs for each component in the path leading up to the target 689 URL. This routine is suitable for clients who wish to show the 690 path leading up to a file system item. NOTE: This routine can be 691 I/O intensive, so use it sparingly, and cache the results if 692 possible. 693 694 Discussion: 695 The CFURLs in the result CFArray are ordered from the target URL 696 to the root of the display path. For example, if the target URL 697 is file://localhost/System/Library/ the CFURLs in the array will 698 be ordered: file://localhost/System/Library/, 699 file://localhost/System/, and then file://localhost/ 700 701 Parameters: 702 703 targetURL: 704 The target URL. 705 706 error: 707 A pointer to a CFErrorRef, or NULL. If error is non-NULL and 708 the function result is NULL, this will be filled in with a 709 CFErrorRef representing the error that occurred. 710 711 Result: 712 A CFArray or NULL if an error occurred. 713 */ 714 CF_EXPORT 715 CFArrayRef _CFURLCreateDisplayPathComponentsArray(CFURLRef url, CFErrorRef *error) API_AVAILABLE(macos(10.7), ios(4.0), watchos(2.0), tvos(9.0)); 716 717 /* Returns true for URLs that locate file system resources. */ 718 CF_EXPORT 719 Boolean _CFURLIsFileURL(CFURLRef url) API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 720 721 /* Deprecated and scheduled for removal in 10.10/8.0 - Use the public API CFURLIsFileReferenceURL() */ 722 CF_EXPORT 723 Boolean _CFURLIsFileReferenceURL(CFURLRef url) API_DEPRECATED("Use CFURLIsFileReferenceURL() instead", macos(10.6,10.9), ios(4.0,7.0), watchos(2.0,2.0), tvos(9.0,9.0)); 724 725 /* For use by Core Services */ 726 CF_EXPORT 727 void *__CFURLResourceInfoPtr(CFURLRef url) API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 728 729 CF_EXPORT 730 void __CFURLSetResourceInfoPtr(CFURLRef url, void *ptr) API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0)); 731 732 733 /* Creates a URL from posixFilePath (only kCFURLPOSIXPathStyle paths are supported). It determines if the file system object is a directory or not to ensure the URL path is correctly terminated with a '/' or not. It also pre-caches the file system properties specified by keys. Note: not all resource properties can be pre-cached -- just those properties that come from the file system. */ 734 CF_EXPORT 735 CFURLRef _CFURLCreateWithFileSystemPathCachingResourcePropertiesForKeys(CFAllocatorRef allocator, CFStringRef posixFilePath, CFArrayRef keys, CFErrorRef *error) API_AVAILABLE(macos(10.14), ios(12.0), watchos(5.0), tvos(12.0)); 736 737 struct FSCatalogInfo; 738 struct HFSUniStr255; 739 740 /* _CFURLGetCatalogInfo is used by LaunchServices */ 741 CF_EXPORT 742 SInt32 _CFURLGetCatalogInfo(CFURLRef url, UInt32 whichInfo, struct FSCatalogInfo *catalogInfo, struct HFSUniStr255 *name) API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)); 743 744 /* _CFURLReplaceObject SPI */ 745 746 /* options for _CFURLReplaceObject */ 747 enum { 748 // _CFURLItemReplacementUsingOriginalMetadataOnly = 1, // not used 749 _CFURLItemReplacementUsingNewMetadataOnly = 2, 750 // _CFURLItemReplacementByMergingMetadata = 3, // not used 751 _CFURLItemReplacementWithoutDeletingBackupItem = 1 << 4 752 }; 753 754 /* _CFURLReplaceObject is the underlying implementation for -[NSFileManager replaceItemAtURL:withItemAtURL:backupItemName:options:resultingItemURL:error:] with one additional argument: newName. The optional newName argument can be used to rename the replacement (for example, when replacing "document.rtf" with "document.rtfd") while still preserving the document's metadata. If newName is used, there must be a file or directory at originalItemURL -- if originalItemURL does not exist and newName is not NULL, an error will be returned. 755 */ 756 CF_EXPORT 757 Boolean _CFURLReplaceObject( CFAllocatorRef allocator, CFURLRef originalItemURL, CFURLRef newItemURL, CFStringRef newName, CFStringRef backupItemName, CFOptionFlags options, CFURLRef *resultingURL, CFErrorRef *error ) API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)); 758 759 CF_EXPORT 760 Boolean _CFURLIsProtectedDirectory(CFURLRef directoryURL) API_AVAILABLE(macos(10.10)) API_UNAVAILABLE(ios, watchos, tvos); 761 762 /* _CFURLAttachSecurityScopeToFileURL attaches a sandbox extension to the file URL object. The URL object will then be security-scoped and will be usable with the NSURL's -startAccessingSecurityScopedResource method and CFURL's CFURLStartAccessingSecurityScopedResource() function. The URL object must be a file URL. If the URL object already has a sandbox extension attached, the new extension replaces the previous sandbox extension. If NULL is passed for the sandboxExtension, the sandbox extension (if any) is removed from the URL object. Callers would be responsible for ensuring the sandbox extension matches the URL's file system path. 763 Note: The sandbox extension is a C-string INCLUDING the terminating nul character stored in a CFData object. 764 */ 765 CF_EXPORT 766 void _CFURLAttachSecurityScopeToFileURL(CFURLRef url, CFDataRef sandboxExtension) API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0)); 767 768 /* _CFURLCopySecurityScopeFromFileURL copies the sandbox extension attached to the file URL object. If the URL is not a file URL or doesn't have a sandbox extension, NULL will be returned. 769 */ 770 CF_EXPORT 771 CFDataRef _CFURLCopySecurityScopeFromFileURL(CFURLRef url) API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0)); 772 773 /** _CFURLNoteSecurityScopedResourceMove should be called preserve access to a scoped resource after it has been moved on the file system. 774 The process will lose access to sourceURL and gain access to destinationURL. For use by only FileCoordination! 775 */ 776 CF_EXPORT 777 Boolean _CFURLNoteSecurityScopedResourceMoved(CFURLRef sourceURL, CFURLRef destinationURL) API_AVAILABLE(macos(12.0), ios(15.0), watchos(8.0), tvos(15.0)); 778 779 CF_EXPORT 780 void _CFURLSetPermanentResourcePropertyForKey(CFURLRef url, CFStringRef key, CFTypeRef propertyValue) API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0)); 781 782 783 #pragma mark - Bookmarks 784 785 // Returns a string describing the bookmark data. For debugging purposes only. 786 CF_EXPORT 787 CFStringRef _CFURLBookmarkCopyDescription(CFDataRef bookmarkRef) API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0)); 788 789 #if TARGET_OS_MAC || TARGET_OS_IPHONE 790 // private CFURLBookmarkCreationOptions 791 enum { 792 kCFURLBookmarkCreationSecurityScopeRevocable API_AVAILABLE(macos(10.16)) API_UNAVAILABLE(ios, watchos, tvos) = ( 1 << 25 ), // if used with kCFURLBookmarkCreationWithSecurityScope, the bookmark can be revoked on a per-app basis. 793 kCFURLBookmarkCreationWithFileProvider API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0)) = ( 1UL << 26 ), // private option to create bookmarks with file provider string. The file provider string overrides the rest of the bookmark data at resolution time. 794 kCFURLBookmarkOperatingInsideScopedBookmarksAgent = (1UL << 27), // private option used internally by ScopedBookmarkAgent to prevent recursion between the agent and the framework code. Available 10_7, NA 795 kCFURLBookmarkCreationAllowCreationIfResourceDoesNotExistMask = ( 1UL << 28 ), // allow creation of a bookmark to a file: scheme with a CFURLRef of item which may not exist. If the filesystem item does not exist, the created bookmark contains essentially no properties beyond the url string. Available 10_7, 5_0. 796 kCFURLBookmarkCreationDoNotIncludeSandboxExtensionsMask = ( 1UL << 29 ), // If set, sandbox extensions are not included in created bookmarks. Ordinarily, bookmarks (except those created suitable for putting into a bookmark file) will have a sandbox extension added for the item. Available 10_7, NA. 797 kCFURLBookmarkCreationAllowOnlyReadAccess API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0)) = ( 1UL << 30 ), // at resolution time only read access to the resource will be granted (works with regular non-security scoped bookmarks) 798 kCFURLBookmarkCreationSuitableForOdocAppleEvent API_DEPRECATED("kCFURLBookmarkCreationSuitableForOdocAppleEvent does nothing and has no effect on bookmark resolution", macos(10.6, 10.11)) API_UNAVAILABLE(ios, watchos, tvos) = ( 1UL << 31 ), // add properties we guarantee will be in an odoc AppleEvent. Available 10_10, NA (but supported back to 10.6). 799 }; 800 801 // private CFURLBookmarkFileCreationOptions 802 enum { 803 // FIXME: These three options (kCFBookmarkFileCreationWithoutOverwritingExistingFile, kCFBookmarkFileCreationWithoutAppendingAliasExtension, and kCFBookmarkFileCreationWithoutCreatingResourceFork) are not implemented and have never been used. 804 kCFBookmarkFileCreationWithoutOverwritingExistingFile = ( 1UL << 8 ), // if destination file already exists don't overwrite it and return an error 805 kCFBookmarkFileCreationWithoutAppendingAliasExtension = ( 1UL << 9 ), // don't add / change whatever extension is on the created alias file 806 kCFBookmarkFileCreationWithoutCreatingResourceFork = ( 1UL << 10 ), // don't create the resource-fork half of the alias file 807 }; 808 809 // private CFURLBookmarkResolutionOptions 810 enum { 811 kCFBookmarkResolutionPerformRelativeResolutionFirstMask API_AVAILABLE(macos(10.8), ios(6.0), watchos(2.0), tvos(9.0)) = ( 1UL << 11 ), // perform relative resolution before absolute resolution. If this bit is set, for this to be useful a relative URL must also have been passed in and the bookmark when created must have been created relative to another url. 812 kCFURLBookmarkResolutionAllowingPromisedItem API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0)) = ( 1UL << 12 ), // If kCFURLBookmarkResolutionAllowingPromisedItem is set, resolving a bookmark may return promise item URL if the target has been evicted to the cloud (instead of downloading the evicted document during bookmark resolution). Clients must use NSPromisedItems and NSFileCoordinator API to access promised item URLs. kCFURLBookmarkResolutionAllowingPromisedItem is ignored when resolving security-scoped bookmarks. 813 kCFBookmarkResolutionQuarantineMountedNetworkVolumesMask API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0)) = ( 1UL << 13 ), // quarantine any network volume mounted during resolution 814 kCFURLBookmarkResolutionFailPromisedItem API_AVAILABLE(macosx(11.0), ios(14.0), watchos(7.0), tvos(14.0)) = ( 1UL << 14 ), // If kCFURLBookmarkResolutionFailPromisedItem is set, resolving a bookmark will fail if the target has been evicted to the cloud (instead of downloading the evicted document during bookmark resolution). 815 kCFURLBookmarkResolutionWithoutExtendingAccess API_AVAILABLE(macos(11.2), ios(14.2), watchos(7.2), tvos(14.2)) = ( 1 << 15 ), // Disable automatic ephemeral extension of the sandbox during resolution. Instead, call `CFURLStartAccessingSecurityScopedResource` on the returned URL when ready to use the resource. 816 }; 817 818 typedef CF_ENUM(CFIndex, CFURLBookmarkMatchResult) { 819 kCFURLBookmarkComparisonUnableToCompare = 0x00000000, /* the two bookmarks could not be compared for some reason */ 820 kCFURLBookmarkComparisonNoMatch = 0x00001000, /* Bookmarks do not refer to the same item */ 821 kCFURLBookmarkComparisonUnlikelyToMatch = 0x00002000, /* it is unlikely that the two items refer to the same filesystem item */ 822 kCFURLBookmarkComparisonLikelyToMatch = 0x00004000, /* it is likely that the two items refer to the same filesystem item ( but, they may not ) */ 823 kCFURLBookmarkComparisonMatch = 0x00008000, /* the two items refer to the same item, but other information in the bookmarks may not match */ 824 kCFURLBookmarkComparisonExactMatch = 0x0000f000 /* the two bookmarks are identical */ 825 }; // Available 10_7, NA. 826 827 /* The relativeToURL and matchingPropertyKeys parameters are not used and are ignored */ 828 CF_EXPORT 829 CFURLBookmarkMatchResult _CFURLBookmarkDataCompare(CFDataRef bookmark1Ref, CFDataRef bookmark2Ref, CFURLRef relativeToURL, CFArrayRef* matchingPropertyKeys) API_AVAILABLE(macos(10.7)) API_UNAVAILABLE(ios, watchos, tvos); 830 831 CF_EXPORT 832 OSStatus _CFURLBookmarkDataToAliasHandle(CFDataRef bookmarkRef, void* aliasHandleP) API_DEPRECATED("don't use AliasHandles", macos(10.7, 10.15)) API_UNAVAILABLE(ios, watchos, tvos); 833 834 CF_EXPORT 835 CFURLRef _CFURLCreateByResolvingAliasFile(CFAllocatorRef allocator, CFURLRef url, CFURLBookmarkResolutionOptions options, CFArrayRef propertiesToInclude, CFErrorRef *error ) API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0)); 836 837 /* 838 The following are properties that can be asked of bookmark data objects in addition to the resource properties 839 from CFURL itself. 840 */ 841 842 extern const CFStringRef kCFURLBookmarkOriginalPathKey API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)); 843 extern const CFStringRef kCFURLBookmarkOriginalRelativePathKey API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)); 844 extern const CFStringRef kCFURLBookmarkOriginalRelativePathComponentsArrayKey API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)); 845 extern const CFStringRef kCFURLBookmarkOriginalVolumeNameKey API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)); 846 extern const CFStringRef kCFURLBookmarkOriginalVolumeCreationDateKey API_AVAILABLE(macos(10.7), ios(5.0), watchos(2.0), tvos(9.0)); 847 extern const CFStringRef kCFURLBookmarkFileProviderStringKey API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), tvos(9.0)); 848 extern const CFStringRef _kCFURLBookmarkURLStringKey API_AVAILABLE(macosx(10.13), ios(11.0), watchos(4.0), tvos(11.0)); 849 #endif // TARGET_OS_MAC || TARGET_OS_IPHONE 850 851 #pragma mark - Revocable Bookmarks 852 853 CF_EXPORT const CFStringRef _kCFURLRevocableBookmarkBundleIdentifierKey API_AVAILABLE(macos(10.16)) API_UNAVAILABLE(ios, watchos, tvos); // CFStringRef 854 CF_EXPORT const CFStringRef _kCFURLRevocableBookmarkAppIdentifierKey API_AVAILABLE(macos(10.16)) API_UNAVAILABLE(ios, watchos, tvos); // CFStringRef 855 CF_EXPORT const CFStringRef _kCFURLRevocableBookmarkActiveStatusKey API_AVAILABLE(macos(10.16)) API_UNAVAILABLE(ios, watchos, tvos); // CFBooleanRef 856 CF_EXPORT const CFStringRef _kCFURLRevocableBookmarkSaltKey API_AVAILABLE(macos(10.16)) API_UNAVAILABLE(ios, watchos, tvos); // CFDataRef 857 858 /** Fetch a list of clients. 859 * 860 * Returns an array of dictionaries, one per client app. Keys from the namespace _kCFURLRevocableBookmarkKey. 861 */ 862 CF_EXPORT CFArrayRef _CFURLRevocableBookmarksCopyClients(void) API_AVAILABLE(macos(10.16)) API_UNAVAILABLE(ios, watchos, tvos); 863 864 /** Fetch a list of bundle identifiers for active clients. */ 865 CF_EXPORT CFArrayRef _CFURLRevocableBookmarksCopyClientBundleIdentifiers(Boolean includeInactive) API_AVAILABLE(macos(10.16)) API_UNAVAILABLE(ios, watchos, tvos); 866 867 /** Set the active state of the app with the given bundle identifier. This does not delete the security token for the app, thus is less secure than revoking the bundle identifier. */ 868 CF_EXPORT Boolean _CFURLRevocableBookmarksSetActiveStatusForBundleIdentifier(CFStringRef identifier, Boolean active) API_AVAILABLE(macos(10.16)) API_UNAVAILABLE(ios, watchos, tvos); 869 870 /** Securely revokes all bookmarks for the bundie identifier. This is not reversable. */ 871 CF_EXPORT Boolean _CFURLRevocableBookmarksRevokeForBundleIdentifier(CFStringRef identifier) API_AVAILABLE(macos(10.16)) API_UNAVAILABLE(ios, watchos, tvos); 872 873 /** Notification sent when the set of active clients changes. */ 874 CF_EXPORT const CFNotificationName _kCFURLRevocableBookmarksClientsDidChangeNotification API_AVAILABLE(macos(10.16)) API_UNAVAILABLE(ios, watchos, tvos); 875 876 CF_EXTERN_C_END 877 878 #endif /* ! __COREFOUNDATION_CFURLPRIV__ */ 879