chore(macos): vendor system-sdk dependency

This commit is contained in:
2024-09-09 03:44:35 -05:00
parent 7f8d05101e
commit a50d52bae5
2634 changed files with 871615 additions and 1 deletions

View File

@@ -0,0 +1,62 @@
--- !tapi-tbd
tbd-version: 4
targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
arm64e-macos, arm64e-maccatalyst ]
uuids:
- target: x86_64-macos
value: 047F8361-0A74-3753-BA4F-991447B4C7D6
- target: x86_64-maccatalyst
value: 047F8361-0A74-3753-BA4F-991447B4C7D6
- target: arm64-macos
value: 00000000-0000-0000-0000-000000000000
- target: arm64-maccatalyst
value: 00000000-0000-0000-0000-000000000000
- target: arm64e-macos
value: 002C7E5D-60B6-30F2-9C7B-54F85CC3C104
- target: arm64e-maccatalyst
value: 002C7E5D-60B6-30F2-9C7B-54F85CC3C104
install-name: '/System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration'
exports:
- targets: [ x86_64-macos, arm64e-macos, x86_64-maccatalyst, arm64e-maccatalyst,
arm64-macos, arm64-maccatalyst ]
symbols: [ _DAApprovalSessionCreate, _DAApprovalSessionGetTypeID, _DAApprovalSessionScheduleWithRunLoop,
_DAApprovalSessionUnscheduleFromRunLoop, _DADiskClaim, _DADiskCopyDescription,
_DADiskCopyIOMedia, _DADiskCopyWholeDisk, _DADiskCreateFromBSDName,
_DADiskCreateFromIOMedia, _DADiskCreateFromVolumePath, _DADiskEject,
_DADiskGetBSDName, _DADiskGetOptions, _DADiskGetTypeID, _DADiskIsClaimed,
_DADiskMount, _DADiskMountWithArguments, _DADiskRename, _DADiskSetOptions,
_DADiskUnclaim, _DADiskUnmount, _DADissenterCreate, _DADissenterGetProcessID,
_DADissenterGetStatus, _DADissenterGetStatusString, _DARegisterDiskAppearedCallback,
_DARegisterDiskDescriptionChangedCallback, _DARegisterDiskDisappearedCallback,
_DARegisterDiskEjectApprovalCallback, _DARegisterDiskListCompleteCallback,
_DARegisterDiskMountApprovalCallback, _DARegisterDiskPeekCallback,
_DARegisterDiskUnmountApprovalCallback, _DARegisterIdleCallback,
_DASessionCreate, _DASessionGetTypeID, _DASessionScheduleWithRunLoop,
_DASessionSetDispatchQueue, _DASessionUnscheduleFromRunLoop,
_DAUnregisterApprovalCallback, _DAUnregisterCallback, __DADiskCreateFromSerialization,
__DADiskGetSession, __DADiskSetAdoption, __DADiskSetEncoding,
__DAmkdir, __DArmdir, _kDAApprovalRunLoopMode, _kDADiskDescriptionAppearanceTimeKey,
_kDADiskDescriptionBusNameKey, _kDADiskDescriptionBusPathKey,
_kDADiskDescriptionDeviceGUIDKey, _kDADiskDescriptionDeviceInternalKey,
_kDADiskDescriptionDeviceModelKey, _kDADiskDescriptionDevicePathKey,
_kDADiskDescriptionDeviceProtocolKey, _kDADiskDescriptionDeviceRevisionKey,
_kDADiskDescriptionDeviceTDMLockedKey, _kDADiskDescriptionDeviceUnitKey,
_kDADiskDescriptionDeviceVendorKey, _kDADiskDescriptionMatchMediaUnformatted,
_kDADiskDescriptionMatchMediaWhole, _kDADiskDescriptionMatchVolumeMountable,
_kDADiskDescriptionMatchVolumeUnrecognized, _kDADiskDescriptionMediaBSDMajorKey,
_kDADiskDescriptionMediaBSDMinorKey, _kDADiskDescriptionMediaBSDNameKey,
_kDADiskDescriptionMediaBSDUnitKey, _kDADiskDescriptionMediaBlockSizeKey,
_kDADiskDescriptionMediaContentKey, _kDADiskDescriptionMediaEjectableKey,
_kDADiskDescriptionMediaEncryptedKey, _kDADiskDescriptionMediaEncryptionDetailKey,
_kDADiskDescriptionMediaIconKey, _kDADiskDescriptionMediaKindKey,
_kDADiskDescriptionMediaLeafKey, _kDADiskDescriptionMediaMatchKey,
_kDADiskDescriptionMediaNameKey, _kDADiskDescriptionMediaPathKey,
_kDADiskDescriptionMediaRemovableKey, _kDADiskDescriptionMediaSizeKey,
_kDADiskDescriptionMediaTypeKey, _kDADiskDescriptionMediaUUIDKey,
_kDADiskDescriptionMediaWholeKey, _kDADiskDescriptionMediaWritableKey,
_kDADiskDescriptionVolumeKindKey, _kDADiskDescriptionVolumeMountableKey,
_kDADiskDescriptionVolumeNameKey, _kDADiskDescriptionVolumeNetworkKey,
_kDADiskDescriptionVolumePathKey, _kDADiskDescriptionVolumeTypeKey,
_kDADiskDescriptionVolumeUUIDKey, _kDADiskDescriptionWatchVolumeName,
_kDADiskDescriptionWatchVolumePath ]
...

View File

@@ -0,0 +1,206 @@
/*
* Copyright (c) 1998-2015 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
* compliance with the License. Please obtain a copy of the License at
* http://www.opensource.apple.com/apsl/ and read it before using this
* file.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
* Please see the License for the specific language governing rights and
* limitations under the License.
*
* @APPLE_LICENSE_HEADER_END@
*/
#ifndef __DISKARBITRATION_DADISK__
#define __DISKARBITRATION_DADISK__
#include <CoreFoundation/CoreFoundation.h>
#include <IOKit/IOKitLib.h>
#include <DiskArbitration/DASession.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
CF_ASSUME_NONNULL_BEGIN
CF_IMPLICIT_BRIDGING_ENABLED
extern const CFStringRef kDADiskDescriptionVolumeKindKey; /* ( CFString ) */
extern const CFStringRef kDADiskDescriptionVolumeMountableKey; /* ( CFBoolean ) */
extern const CFStringRef kDADiskDescriptionVolumeNameKey; /* ( CFString ) */
extern const CFStringRef kDADiskDescriptionVolumeNetworkKey; /* ( CFBoolean ) */
extern const CFStringRef kDADiskDescriptionVolumePathKey; /* ( CFURL ) */
extern const CFStringRef kDADiskDescriptionVolumeTypeKey; /* ( CFString ) */
extern const CFStringRef kDADiskDescriptionVolumeUUIDKey; /* ( CFUUID ) */
extern const CFStringRef kDADiskDescriptionMediaBlockSizeKey; /* ( CFNumber ) */
extern const CFStringRef kDADiskDescriptionMediaBSDMajorKey; /* ( CFNumber ) */
extern const CFStringRef kDADiskDescriptionMediaBSDMinorKey; /* ( CFNumber ) */
extern const CFStringRef kDADiskDescriptionMediaBSDNameKey; /* ( CFString ) */
extern const CFStringRef kDADiskDescriptionMediaBSDUnitKey; /* ( CFNumber ) */
extern const CFStringRef kDADiskDescriptionMediaContentKey; /* ( CFString ) */
extern const CFStringRef kDADiskDescriptionMediaEjectableKey; /* ( CFBoolean ) */
extern const CFStringRef kDADiskDescriptionMediaIconKey; /* ( CFDictionary ) */
extern const CFStringRef kDADiskDescriptionMediaKindKey; /* ( CFString ) */
extern const CFStringRef kDADiskDescriptionMediaLeafKey; /* ( CFBoolean ) */
extern const CFStringRef kDADiskDescriptionMediaNameKey; /* ( CFString ) */
extern const CFStringRef kDADiskDescriptionMediaPathKey; /* ( CFString ) */
extern const CFStringRef kDADiskDescriptionMediaRemovableKey; /* ( CFBoolean ) */
extern const CFStringRef kDADiskDescriptionMediaSizeKey; /* ( CFNumber ) */
extern const CFStringRef kDADiskDescriptionMediaTypeKey; /* ( CFString ) */
extern const CFStringRef kDADiskDescriptionMediaUUIDKey; /* ( CFUUID ) */
extern const CFStringRef kDADiskDescriptionMediaWholeKey; /* ( CFBoolean ) */
extern const CFStringRef kDADiskDescriptionMediaWritableKey; /* ( CFBoolean ) */
extern const CFStringRef kDADiskDescriptionMediaEncryptedKey; /* ( CFBoolean ) */
extern const CFStringRef kDADiskDescriptionMediaEncryptionDetailKey; /* ( CFNumber ) */
extern const CFStringRef kDADiskDescriptionDeviceGUIDKey; /* ( CFData ) */
extern const CFStringRef kDADiskDescriptionDeviceInternalKey; /* ( CFBoolean ) */
extern const CFStringRef kDADiskDescriptionDeviceModelKey; /* ( CFString ) */
extern const CFStringRef kDADiskDescriptionDevicePathKey; /* ( CFString ) */
extern const CFStringRef kDADiskDescriptionDeviceProtocolKey; /* ( CFString ) */
extern const CFStringRef kDADiskDescriptionDeviceRevisionKey; /* ( CFString ) */
extern const CFStringRef kDADiskDescriptionDeviceUnitKey; /* ( CFNumber ) */
extern const CFStringRef kDADiskDescriptionDeviceVendorKey; /* ( CFString ) */
extern const CFStringRef kDADiskDescriptionDeviceTDMLockedKey; /* ( CFBoolean ) */
extern const CFStringRef kDADiskDescriptionBusNameKey; /* ( CFString ) */
extern const CFStringRef kDADiskDescriptionBusPathKey; /* ( CFString ) */
#ifndef __DISKARBITRATIOND__
/*!
* @typedef DADiskRef
* Type of a reference to DADisk instances.
*/
typedef struct CF_BRIDGED_TYPE( id ) __DADisk * DADiskRef;
/*!
* @function DADiskGetTypeID
* @abstract Returns the type identifier of all DADisk instances.
*/
extern CFTypeID DADiskGetTypeID( void );
/*!
* @function DADiskCreateFromBSDName
* @abstract Creates a new disk object.
* @param allocator The allocator object to be used to allocate memory.
* @param session The DASession in which to contact Disk Arbitration.
* @param name The BSD device name.
* @result A reference to a new DADisk.
* @discussion
* The caller of this function receives a reference to the returned object. The
* caller also implicitly retains the object and is responsible for releasing it
* with CFRelease().
*/
extern DADiskRef __nullable DADiskCreateFromBSDName( CFAllocatorRef __nullable allocator, DASessionRef session, const char * name );
/*!
* @function DADiskCreateFromIOMedia
* @abstract Creates a new disk object.
* @param allocator The allocator object to be used to allocate memory.
* @param session The DASession in which to contact Disk Arbitration.
* @param media The I/O Kit media object.
* @result A reference to a new DADisk.
* @discussion
* The caller of this function receives a reference to the returned object. The
* caller also implicitly retains the object and is responsible for releasing it
* with CFRelease().
*/
extern DADiskRef __nullable DADiskCreateFromIOMedia( CFAllocatorRef __nullable allocator, DASessionRef session, io_service_t media );
/*!
* @function DADiskCreateFromVolumePath
* @abstract Creates a new disk object.
* @param allocator The allocator object to be used to allocate memory.
* @param session The DASession in which to contact Disk Arbitration.
* @param path The BSD mount point.
* @result A reference to a new DADisk.
* @discussion
* The caller of this function receives a reference to the returned object. The
* caller also implicitly retains the object and is responsible for releasing it
* with CFRelease().
*/
extern DADiskRef __nullable DADiskCreateFromVolumePath( CFAllocatorRef __nullable allocator, DASessionRef session, CFURLRef path );
/*!
* @function DADiskGetBSDName
* @abstract Obtains the BSD device name for the specified disk.
* @param disk The DADisk for which to obtain the BSD device name.
* @result The disk's BSD device name.
* @discussion
* The BSD device name can be used with opendev() to open the BSD device.
*/
extern const char * __nullable DADiskGetBSDName( DADiskRef disk );
/*!
* @function DADiskCopyIOMedia
* @abstract Obtains the I/O Kit media object for the specified disk.
* @param disk The DADisk for which to obtain the I/O Kit media object.
* @result The disk's I/O Kit media object.
* @discussion
* The caller of this function receives a reference to the returned object. The
* caller also implicitly retains the object and is responsible for releasing it
* with IOObjectRelease().
*/
extern io_service_t DADiskCopyIOMedia( DADiskRef disk );
/*!
* @function DADiskCopyDescription
* @abstract Obtains the Disk Arbitration description of the specified disk.
* @param disk The DADisk for which to obtain the Disk Arbitration description.
* @result The disk's Disk Arbitration description.
* @discussion
* This function will contact Disk Arbitration to acquire the latest description
* of the specified disk, unless this function is called on a disk object passed
* within the context of a registered callback, in which case the description is
* current as of that callback event.
*
* The caller of this function receives a reference to the returned object. The
* caller also implicitly retains the object and is responsible for releasing it
* with CFRelease().
*/
extern CFDictionaryRef __nullable DADiskCopyDescription( DADiskRef disk );
/*!
* @function DADiskCopyWholeDisk
* @abstract Obtain the associated whole disk object for the specified disk.
* @param disk The disk object.
* @result The disk's associated whole disk object.
* @discussion
* The caller of this function receives a reference to the returned object. The
* caller also implicitly retains the object and is responsible for releasing it
* with CFRelease().
*/
extern DADiskRef __nullable DADiskCopyWholeDisk( DADiskRef disk );
#endif /* !__DISKARBITRATIOND__ */
CF_IMPLICIT_BRIDGING_DISABLED
CF_ASSUME_NONNULL_END
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* !__DISKARBITRATION_DADISK__ */

View File

@@ -0,0 +1,110 @@
/*
* Copyright (c) 1998-2015 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
* compliance with the License. Please obtain a copy of the License at
* http://www.opensource.apple.com/apsl/ and read it before using this
* file.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
* Please see the License for the specific language governing rights and
* limitations under the License.
*
* @APPLE_LICENSE_HEADER_END@
*/
#ifndef __DISKARBITRATION_DADISSENTER__
#define __DISKARBITRATION_DADISSENTER__
#include <mach/error.h>
#include <CoreFoundation/CoreFoundation.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
CF_ASSUME_NONNULL_BEGIN
CF_IMPLICIT_BRIDGING_ENABLED
#define err_local_diskarbitration err_sub( 0x368 )
/*!
* @enum DAReturn
* @abstract A return code.
*/
enum
{
kDAReturnSuccess = 0,
kDAReturnError = err_local | err_local_diskarbitration | 0x01, /* ( 0xF8DA0001 ) */
kDAReturnBusy = err_local | err_local_diskarbitration | 0x02, /* ( 0xF8DA0002 ) */
kDAReturnBadArgument = err_local | err_local_diskarbitration | 0x03, /* ( 0xF8DA0003 ) */
kDAReturnExclusiveAccess = err_local | err_local_diskarbitration | 0x04, /* ( 0xF8DA0004 ) */
kDAReturnNoResources = err_local | err_local_diskarbitration | 0x05, /* ( 0xF8DA0005 ) */
kDAReturnNotFound = err_local | err_local_diskarbitration | 0x06, /* ( 0xF8DA0006 ) */
kDAReturnNotMounted = err_local | err_local_diskarbitration | 0x07, /* ( 0xF8DA0007 ) */
kDAReturnNotPermitted = err_local | err_local_diskarbitration | 0x08, /* ( 0xF8DA0008 ) */
kDAReturnNotPrivileged = err_local | err_local_diskarbitration | 0x09, /* ( 0xF8DA0009 ) */
kDAReturnNotReady = err_local | err_local_diskarbitration | 0x0A, /* ( 0xF8DA000A ) */
kDAReturnNotWritable = err_local | err_local_diskarbitration | 0x0B, /* ( 0xF8DA000B ) */
kDAReturnUnsupported = err_local | err_local_diskarbitration | 0x0C /* ( 0xF8DA000C ) */
};
typedef mach_error_t DAReturn;
#ifndef __DISKARBITRATIOND__
/*!
* @typedef DADissenterRef
* Type of a reference to DADissenter instances.
*/
typedef const struct CF_BRIDGED_TYPE( id ) __DADissenter * DADissenterRef;
/*!
* @function DADissenterCreate
* @abstract Creates a new dissenter object.
* @param allocator The allocator object to be used to allocate memory.
* @param status The return code.
* @param string The return code string. Pass NULL for no reason.
* @result A reference to a new DADissenter.
*/
extern DADissenterRef DADissenterCreate( CFAllocatorRef __nullable allocator, DAReturn status, CFStringRef __nullable string );
/*!
* @function DADissenterGetStatus
* @abstract Obtains the return code.
* @param dissenter The DADissenter for which to obtain the return code.
* @result The return code. A BSD return code, if applicable, is encoded with unix_err().
*/
extern DAReturn DADissenterGetStatus( DADissenterRef dissenter );
/*!
* @function DADissenterGetStatusString
* @abstract Obtains the return code string.
* @param dissenter The DADissenter for which to obtain the return code string.
* @result The return code string.
*/
extern CFStringRef __nullable DADissenterGetStatusString( DADissenterRef dissenter );
#endif /* !__DISKARBITRATIOND__ */
CF_IMPLICIT_BRIDGING_DISABLED
CF_ASSUME_NONNULL_END
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* !__DISKARBITRATION_DADISSENTER__ */

View File

@@ -0,0 +1,146 @@
/*
* Copyright (c) 1998-2015 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
* compliance with the License. Please obtain a copy of the License at
* http://www.opensource.apple.com/apsl/ and read it before using this
* file.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
* Please see the License for the specific language governing rights and
* limitations under the License.
*
* @APPLE_LICENSE_HEADER_END@
*/
#ifndef __DISKARBITRATION_DASESSION__
#define __DISKARBITRATION_DASESSION__
#include <CoreFoundation/CoreFoundation.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
CF_ASSUME_NONNULL_BEGIN
CF_IMPLICIT_BRIDGING_ENABLED
#ifndef __DISKARBITRATIOND__
/*!
* @typedef DASessionRef
* Type of a reference to DASession instances.
*/
typedef struct CF_BRIDGED_TYPE( id ) __DASession * DASessionRef;
/*!
* @function DASessionGetTypeID
* @abstract Returns the type identifier of all DASession instances.
*/
extern CFTypeID DASessionGetTypeID( void );
/*!
* @function DASessionCreate
* @abstract Creates a new session.
* @result A reference to a new DASession.
* @discussion
* The caller of this function receives a reference to the returned object. The
* caller also implicitly retains the object and is responsible for releasing it.
*/
extern DASessionRef __nullable DASessionCreate( CFAllocatorRef __nullable allocator );
/*!
* @function DASessionScheduleWithRunLoop
* @abstract Schedules the session on a run loop.
* @param session The session which is being scheduled.
* @param runLoop The run loop on which the session should be scheduled.
* @param runLoopMode The run loop mode in which the session should be scheduled.
*/
extern void DASessionScheduleWithRunLoop( DASessionRef session, CFRunLoopRef runLoop, CFStringRef runLoopMode );
/*!
* @function DASessionUnscheduleFromRunLoop
* @abstract Unschedules the session from a run loop.
* @param session The session which is being unscheduled.
* @param runLoop The run loop on which the session is scheduled.
* @param runLoopMode The run loop mode in which the session is scheduled.
*/
extern void DASessionUnscheduleFromRunLoop( DASessionRef session, CFRunLoopRef runLoop, CFStringRef runLoopMode );
/*!
* @function DASessionSetDispatchQueue
* @abstract Schedules the session on a dispatch queue.
* @param session The session which is being scheduled.
* @param queue The dispatch queue on which the session should be scheduled. Pass NULL to unschedule.
*/
extern void DASessionSetDispatchQueue( DASessionRef session, dispatch_queue_t __nullable queue );
/*
* @typedef DAApprovalSessionRef
* Type of a reference to DAApprovalSession instances.
*/
typedef struct CF_BRIDGED_TYPE( id ) __DASession * DAApprovalSessionRef CF_SWIFT_UNAVAILABLE( "Use DASessionRef instead" );
/*
* @function DAApprovalSessionGetTypeID
* @abstract Returns the type identifier of all DAApprovalSession instances.
*/
extern CFTypeID DAApprovalSessionGetTypeID( void ) CF_SWIFT_UNAVAILABLE( "Use DASessionGetTypeID instead" );
/*
* @function DAApprovalSessionCreate
* @abstract Creates a new approval session.
* @result A reference to a new DAApprovalSession.
* @discussion
* The caller of this function receives a reference to the returned object. The
* caller also implicitly retains the object and is responsible for releasing it.
*/
extern DAApprovalSessionRef __nullable DAApprovalSessionCreate( CFAllocatorRef __nullable allocator ) CF_SWIFT_UNAVAILABLE( "Use DASessionCreate instead" );
/*
* @function DAApprovalSessionScheduleWithRunLoop
* @abstract Schedules the approval session on a run loop.
* @param session The approval session which is being scheduled.
* @param runLoop The run loop on which the approval session should be scheduled.
* @param runLoopMode The run loop mode in which the approval session should be scheduled.
*/
extern void DAApprovalSessionScheduleWithRunLoop( DAApprovalSessionRef session, CFRunLoopRef runLoop, CFStringRef runLoopMode ) CF_SWIFT_UNAVAILABLE( "Use DASessionSetDispatchQueue instead" );
/*
* @function DAApprovalSessionUnscheduleFromRunLoop
* @abstract Unschedules the approval session from a run loop.
* @param session The approval session which is being unscheduled.
* @param runLoop The run loop on which the approval session is scheduled.
* @param runLoopMode The run loop mode in which the approval session is scheduled.
*/
extern void DAApprovalSessionUnscheduleFromRunLoop( DAApprovalSessionRef session, CFRunLoopRef runLoop, CFStringRef runLoopMode ) CF_SWIFT_UNAVAILABLE( "Use DASessionSetDispatchQueue instead" );
#endif /* !__DISKARBITRATIOND__ */
CF_IMPLICIT_BRIDGING_DISABLED
CF_ASSUME_NONNULL_END
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* !__DISKARBITRATION_DASESSION__ */

View File

@@ -0,0 +1,580 @@
/*
* Copyright (c) 1998-2015 Apple Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
* compliance with the License. Please obtain a copy of the License at
* http://www.opensource.apple.com/apsl/ and read it before using this
* file.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
* Please see the License for the specific language governing rights and
* limitations under the License.
*
* @APPLE_LICENSE_HEADER_END@
*/
#ifndef __DISKARBITRATION_DISKARBITRATION__
#define __DISKARBITRATION_DISKARBITRATION__
#include <CoreFoundation/CoreFoundation.h>
#include <DiskArbitration/DADisk.h>
#include <DiskArbitration/DADissenter.h>
#include <DiskArbitration/DASession.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
CF_ASSUME_NONNULL_BEGIN
CF_IMPLICIT_BRIDGING_ENABLED
/*!
* @enum DADiskMountOptions
* @abstract Options for DADiskMount().
* @constant kDADiskMountOptionWhole Mount the volumes tied to the whole disk object.
*/
enum
{
kDADiskMountOptionDefault = 0x00000000,
kDADiskMountOptionWhole = 0x00000001
};
typedef UInt32 DADiskMountOptions;
/*!
* @enum DADiskRenameOptions
* @abstract Options for DADiskRename().
*/
enum
{
kDADiskRenameOptionDefault = 0x00000000
};
typedef UInt32 DADiskRenameOptions;
/*!
* @enum DADiskUnmountOptions
* @abstract Options for DADiskUnmount().
* @constant kDADiskUnmountOptionForce Unmount the volume even if files are still active.
* @constant kDADiskUnmountOptionWhole Unmount the volumes tied to the whole disk object.
*/
enum
{
kDADiskUnmountOptionDefault = 0x00000000,
kDADiskUnmountOptionForce = 0x00080000,
kDADiskUnmountOptionWhole = 0x00000001
};
typedef UInt32 DADiskUnmountOptions;
/*!
* @enum DADiskEjectOptions
* @abstract Options for DADiskEject().
*/
enum
{
kDADiskEjectOptionDefault = 0x00000000
};
typedef UInt32 DADiskEjectOptions;
/*!
* @enum DADiskClaimOptions
* @abstract Options for DADiskClaim().
*/
enum
{
kDADiskClaimOptionDefault = 0x00000000
};
typedef UInt32 DADiskClaimOptions;
/*!
* @enum DADiskOptions
* @abstract Options for DADiskGetOptions() and DADiskSetOptions().
*/
enum
{
kDADiskOptionDefault = 0x00000000
};
typedef UInt32 DADiskOptions;
/*!
* @constant kDADiskDescriptionMatchMediaUnformatted
* Predefined CFDictionary object containing a set of disk description keys and values
* appropriate for matching unformatted media using DARegister*Callback().
*/
extern CFDictionaryRef kDADiskDescriptionMatchMediaUnformatted;
/*!
* @constant kDADiskDescriptionMatchMediaWhole
* Predefined CFDictionary object containing a set of disk description keys and values
* appropriate for matching whole media using DARegister*Callback().
*/
extern CFDictionaryRef kDADiskDescriptionMatchMediaWhole;
/*!
* @constant kDADiskDescriptionMatchVolumeMountable
* Predefined CFDictionary object containing a set of disk description keys and values
* appropriate for matching mountable volumes using DARegister*Callback().
*/
extern CFDictionaryRef kDADiskDescriptionMatchVolumeMountable;
/*!
* @constant kDADiskDescriptionMatchVolumeUnrecognized
* Predefined CFDictionary object containing a set of disk description keys and values
* appropriate for matching unrecognized volumes using DARegister*Callback().
*/
extern CFDictionaryRef kDADiskDescriptionMatchVolumeUnrecognized;
/*!
* @constant kDADiskDescriptionWatchVolumeName
* Predefined CFArray object containing a set of disk description keys appropriate for
* watching volume name changes using DARegisterDiskDescriptionChangedCallback().
*/
extern CFArrayRef kDADiskDescriptionWatchVolumeName;
/*!
* @constant kDADiskDescriptionWatchVolumePath
* Predefined CFArray object containing a set of disk description keys appropriate for
* watching volume mount changes using DARegisterDiskDescriptionChangedCallback().
*/
extern CFArrayRef kDADiskDescriptionWatchVolumePath;
#ifndef __DISKARBITRATIOND__
/*!
* @typedef DADiskAppearedCallback
* @abstract Type of the callback function used by DARegisterDiskAppearedCallback().
* @param disk A disk object.
* @param context The user-defined context parameter given to the registration function.
*/
typedef void ( *DADiskAppearedCallback )( DADiskRef disk, void * __nullable context );
/*!
* @function DARegisterDiskAppearedCallback
* @abstract Registers a callback function to be called whenever a disk has appeared.
* @param session The session object.
* @param match The disk description keys to match. Pass NULL for all disk objects.
* @param callback The callback function to call when a disk has appeared.
* @param context The user-defined context parameter to pass to the callback function.
*/
extern void DARegisterDiskAppearedCallback( DASessionRef session,
CFDictionaryRef __nullable match,
DADiskAppearedCallback callback,
void * __nullable context );
/*!
* @typedef DADiskDescriptionChangedCallback
* @abstract Type of the callback function used by DARegisterDiskDescriptionChangedCallback().
* @param disk A disk object.
* @param keys A list of changed keys.
* @param context The user-defined context parameter given to the registration function.
*/
typedef void ( *DADiskDescriptionChangedCallback )( DADiskRef disk, CFArrayRef keys, void * __nullable context );
/*!
* @function DARegisterDiskDescriptionChangedCallback
* @abstract Registers a callback function to be called whenever a disk description has changed.
* @param session The session object.
* @param match The disk description keys to match. Pass NULL for all disk objects.
* @param watch The disk description keys to watch. Pass NULL for all keys.
* @param callback The callback function to call when a watched key changes.
* @param context The user-defined context parameter to pass to the callback function.
*/
extern void DARegisterDiskDescriptionChangedCallback( DASessionRef session,
CFDictionaryRef __nullable match,
CFArrayRef __nullable watch,
DADiskDescriptionChangedCallback callback,
void * __nullable context );
/*!
* @typedef DADiskDisappearedCallback
* @abstract Type of the callback function used by DARegisterDiskDisappearedCallback().
* @param disk A disk object.
* @param context The user-defined context parameter given to the registration function.
*/
typedef void ( *DADiskDisappearedCallback )( DADiskRef disk, void * __nullable context );
/*!
* @function DARegisterDiskDisappearedCallback
* @abstract Registers a callback function to be called whenever a disk has disappeared.
* @param session The session object.
* @param match The disk description keys to match. Pass NULL for all disk objects.
* @param callback The callback function to call when a disk has disappeared.
* @param context The user-defined context parameter to pass to the callback function.
*/
extern void DARegisterDiskDisappearedCallback( DASessionRef session,
CFDictionaryRef __nullable match,
DADiskDisappearedCallback callback,
void * __nullable context );
/*!
* @typedef DADiskMountCallback
* @abstract Type of the callback function used by DADiskMount().
* @param disk The disk object.
* @param dissenter A dissenter object on failure or NULL on success.
* @param context The user-defined context parameter given to the mount function.
* @discussion
* If the disk is already mounted, then status code in the dissenter object will be set to kDAReturnBusy
*/
typedef void ( *DADiskMountCallback )( DADiskRef disk, DADissenterRef __nullable dissenter, void * __nullable context );
/*!
* @function DADiskMount
* @abstract Mounts the volume at the specified disk object.
* @param disk The disk object.
* @param path The mount path. Pass NULL for a "standard" mount path.
* @param options The mount options.
* @param callback The callback function to call once the mount completes.
* @param context The user-defined context parameter to pass to the callback function.
*/
extern void DADiskMount( DADiskRef disk,
CFURLRef __nullable path,
DADiskMountOptions options,
DADiskMountCallback __nullable callback,
void * __nullable context );
/*!
* @function DADiskMountWithArguments
* @abstract Mounts the volume at the specified disk object, with the specified mount options.
* @param disk The disk object.
* @param path The mount path. Pass NULL for a "standard" mount path.
* @param options The mount options.
* @param callback The callback function to call once the mount completes.
* @param context The user-defined context parameter to pass to the callback function.
* @param arguments The null-terminated list of mount options to pass to /sbin/mount -o.
*/
extern void DADiskMountWithArguments( DADiskRef disk,
CFURLRef __nullable path,
DADiskMountOptions options,
DADiskMountCallback __nullable callback,
void * __nullable context,
CFStringRef __nullable arguments[_Nullable] );
/*!
* @typedef DADiskMountApprovalCallback
* @abstract Type of the callback function used by DARegisterDiskMountApprovalCallback().
* @param disk A disk object.
* @param context The user-defined context parameter given to the registration function.
* @result A dissenter reference. Pass NULL to approve.
* @discussion
* The caller of this callback receives a reference to the returned object. The
* caller also implicitly retains the object and is responsible for releasing it
* with CFRelease().
*/
typedef DADissenterRef __nullable ( *DADiskMountApprovalCallback )( DADiskRef disk, void * __nullable context );
/*!
* @function DARegisterDiskMountApprovalCallback
* @abstract Registers a callback function to be called whenever a volume is to be mounted.
* @param session The session object.
* @param match The disk description keys to match. Pass NULL for all disk objects.
* @param callback The callback function to call when a volume is to be mounted.
* @param context The user-defined context parameter to pass to the callback function.
*/
extern void DARegisterDiskMountApprovalCallback( DASessionRef session,
CFDictionaryRef __nullable match,
DADiskMountApprovalCallback callback,
void * __nullable context );
/*!
* @typedef DADiskRenameCallback
* @abstract Type of the callback function used by DADiskRename().
* @param disk The disk object.
* @param dissenter A dissenter object on failure or NULL on success.
* @param context The user-defined context parameter given to the rename function.
*/
typedef void ( *DADiskRenameCallback )( DADiskRef disk, DADissenterRef __nullable dissenter, void * __nullable context );
/*!
* @function DADiskRename
* @abstract Renames the volume at the specified disk object.
* @param disk The disk object.
* @param options The rename options.
* @param callback The callback function to call once the rename completes.
* @param context The user-defined context parameter to pass to the callback function.
*/
extern void DADiskRename( DADiskRef disk,
CFStringRef name,
DADiskRenameOptions options,
DADiskRenameCallback __nullable callback,
void * __nullable context );
/*!
* @typedef DADiskUnmountCallback
* @abstract Type of the callback function used by DADiskUnmount().
* @param disk The disk object.
* @param dissenter A dissenter object on failure or NULL on success.
* @param context The user-defined context parameter given to the unmount function.
*/
typedef void ( *DADiskUnmountCallback )( DADiskRef disk, DADissenterRef __nullable dissenter, void * __nullable context );
/*!
* @function DADiskUnmount
* @abstract Unmounts the volume at the specified disk object.
* @param disk The disk object.
* @param options The unmount options.
* @param callback The callback function to call once the unmount completes.
* @param context The user-defined context parameter to pass to the callback function.
*/
extern void DADiskUnmount( DADiskRef disk,
DADiskUnmountOptions options,
DADiskUnmountCallback __nullable callback,
void * __nullable context );
/*!
* @typedef DADiskUnmountApprovalCallback
* @abstract Type of the callback function used by DARegisterDiskUnmountApprovalCallback().
* @param disk A disk object.
* @param context The user-defined context parameter given to the registration function.
* @result A dissenter reference. Pass NULL to approve.
* @discussion
* The caller of this callback receives a reference to the returned object. The
* caller also implicitly retains the object and is responsible for releasing it
* with CFRelease().
*/
typedef DADissenterRef __nullable ( *DADiskUnmountApprovalCallback )( DADiskRef disk, void * __nullable context );
/*!
* @function DARegisterDiskUnmountApprovalCallback
* @abstract Registers a callback function to be called whenever a volume is to be unmounted.
* @param session The session object.
* @param match The disk description keys to match. Pass NULL for all disk objects.
* @param callback The callback function to call when a volume is to be unmounted.
* @param context The user-defined context parameter to pass to the callback function.
*/
extern void DARegisterDiskUnmountApprovalCallback( DASessionRef session,
CFDictionaryRef __nullable match,
DADiskUnmountApprovalCallback callback,
void * __nullable context );
/*!
* @typedef DADiskEjectCallback
* @abstract Type of the callback function used by DADiskEject().
* @param disk The disk object.
* @param dissenter A dissenter object on failure or NULL on success.
* @param context The user-defined context parameter given to the eject function.
*/
typedef void ( *DADiskEjectCallback )( DADiskRef disk, DADissenterRef __nullable dissenter, void * __nullable context );
/*!
* @function DADiskEject
* @abstract Ejects the specified disk object.
* @param disk The disk object.
* @param options The eject options.
* @param callback The callback function to call once the ejection completes.
* @param context The user-defined context parameter to pass to the callback function.
*/
extern void DADiskEject( DADiskRef disk,
DADiskEjectOptions options,
DADiskEjectCallback __nullable callback,
void * __nullable context );
/*!
* @typedef DADiskEjectApprovalCallback
* @abstract Type of the callback function used by DARegisterDiskEjectApprovalCallback().
* @param disk A disk object.
* @param context The user-defined context parameter given to the registration function.
* @result A dissenter reference. Pass NULL to approve.
* @discussion
* The caller of this callback receives a reference to the returned object. The
* caller also implicitly retains the object and is responsible for releasing it
* with CFRelease().
*/
typedef DADissenterRef __nullable ( *DADiskEjectApprovalCallback )( DADiskRef disk, void * __nullable context );
/*!
* @function DARegisterDiskEjectApprovalCallback
* @abstract Registers a callback function to be called whenever a volume is to be ejected.
* @param session The session object.
* @param match The disk description keys to match. Pass NULL for all disk objects.
* @param callback The callback function to call when a volume is to be ejected.
* @param context The user-defined context parameter to pass to the callback function.
*/
extern void DARegisterDiskEjectApprovalCallback( DASessionRef session,
CFDictionaryRef __nullable match,
DADiskEjectApprovalCallback callback,
void * __nullable context );
/*!
* @typedef DADiskClaimCallback
* @abstract Type of the callback function used by DADiskClaim().
* @param disk The disk object.
* @param dissenter A dissenter object on failure or NULL on success.
* @param context The user-defined context parameter given to the claim function.
*/
typedef void ( *DADiskClaimCallback )( DADiskRef disk, DADissenterRef __nullable dissenter, void * __nullable context );
/*!
* @typedef DADiskClaimReleaseCallback
* @abstract Type of the callback function used by DADiskClaim().
* @param disk The disk object.
* @param context The user-defined context parameter given to the claim function.
* @result A dissenter reference. Pass NULL to release claim.
* @discussion
* The caller of this callback receives a reference to the returned object. The
* caller also implicitly retains the object and is responsible for releasing it
* with CFRelease().
*/
typedef DADissenterRef __nullable ( *DADiskClaimReleaseCallback )( DADiskRef disk, void * __nullable context );
/*!
* @function DADiskClaim
* @abstract Claims the specified disk object for exclusive use.
* @param disk The disk object.
* @param options The claim options.
* @param release The callback function to call when the claim is to be released.
* @param releaseContext The user-defined context parameter to pass to the callback function.
* @param callback The callback function to call once the claim completes.
* @param callbackContext The user-defined context parameter to pass to the callback function.
*/
extern void DADiskClaim( DADiskRef disk,
DADiskClaimOptions options,
DADiskClaimReleaseCallback __nullable release,
void * __nullable releaseContext,
DADiskClaimCallback __nullable callback,
void * __nullable callbackContext );
/*!
* @function DADiskIsClaimed
* @abstract Reports whether or not the disk is claimed.
* @param disk The disk object.
* @result TRUE if the disk is claimed, otherwise FALSE.
*/
extern Boolean DADiskIsClaimed( DADiskRef disk );
/*!
* @function DADiskUnclaim
* @abstract Unclaims the specified disk object.
* @param disk The disk object.
*/
extern void DADiskUnclaim( DADiskRef disk );
/*!
* @typedef DADiskPeekCallback
* @abstract Type of the callback function used by DARegisterDiskPeekCallback().
* @param disk A disk object.
* @param context The user-defined context parameter given to the registration function.
* @discussion
* The peek callback functions are called in a specific order, from lowest order to highest
* order. DADiskClaim() could be used here to claim the disk object and DADiskSetOptions()
* could be used here to set up options on the disk object.
*/
typedef void ( *DADiskPeekCallback )( DADiskRef disk, void * __nullable context );
/*!
* @function DARegisterDiskPeekCallback
* @abstract Registers a callback function to be called whenever a disk has been probed.
* @param session The session object.
* @param match The disk description keys to match. Pass NULL for all disk objects.
* @param order The callback order, from lowest to highest. Pass 0 for the default.
* @param callback The callback function to call when a disk has been probed.
* @param context The user-defined context parameter to pass to the callback function.
*/
extern void DARegisterDiskPeekCallback( DASessionRef session,
CFDictionaryRef __nullable match,
CFIndex order,
DADiskPeekCallback callback,
void * __nullable context );
/*!
* @function DADiskGetOptions
* @abstract Obtains the options for the specified disk.
* @param disk The disk object for which to obtain the options.
* @result The options.
*/
extern DADiskOptions DADiskGetOptions( DADiskRef disk );
/*!
* @function DADiskSetOptions
* @abstract Sets the options for the specified disk.
* @param disk The disk object for which to set the options.
* @param options The options to set or clear.
* @param value Pass TRUE to set options; otherwise pass FALSE to clear options.
* @result A result code.
*/
extern DAReturn DADiskSetOptions( DADiskRef disk, DADiskOptions options, Boolean value );
/*!
* @function DAUnregisterCallback
* @abstract Unregisters a registered callback function.
* @param session The session object.
* @param callback The registered callback function.
* @param context The user-defined context parameter.
*/
extern void DAUnregisterCallback( DASessionRef session, void * callback, void * __nullable context );
/*
* @function DAUnregisterApprovalCallback
* @abstract Unregisters a registered callback function.
* @param session The session object.
* @param callback The registered callback function.
* @param context The user-defined context parameter.
*/
extern void DAUnregisterApprovalCallback( DASessionRef session, void * callback, void * __nullable context ) CF_SWIFT_UNAVAILABLE( "Use DAUnregisterCallback instead" );
#endif /* !__DISKARBITRATIOND__ */
CF_IMPLICIT_BRIDGING_DISABLED
CF_ASSUME_NONNULL_END
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* !__DISKARBITRATION_DISKARBITRATION__ */

View File

@@ -0,0 +1,9 @@
framework module DiskArbitration [extern_c] [system]
{
umbrella header "DiskArbitration.h"
export *
module *
{
export *
}
}