/ CoreFoundation / URL.subproj / CFURLPriv.h
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