#ifndef __DISKARBITRATIOND_DASESSION__
#define __DISKARBITRATIOND_DASESSION__
#include <CoreFoundation/CoreFoundation.h>
#include <DiskArbitration/DiskArbitration.h>
#include <Security/Authorization.h>
#ifdef __cplusplus
extern "C" {
#endif
enum
{
kDASessionOptionNoTimeout = 0x01000000
};
typedef UInt32 DASessionOption;
typedef UInt32 DASessionOptions;
enum
{
kDASessionStateIdle = 0x00000001,
kDASessionStateTimeout = 0x01000000,
kDASessionStateZombie = 0x10000000
};
typedef UInt32 DASessionState;
typedef struct __DACallback * DACallbackRef;
typedef struct __DASession * DASessionRef;
extern const char * _DASessionGetName( DASessionRef session );
extern DASessionRef DASessionCreate( CFAllocatorRef allocator, const char * _name, pid_t _pid );
extern AuthorizationRef DASessionGetAuthorization( DASessionRef session );
extern CFMutableArrayRef DASessionGetCallbackQueue( DASessionRef session );
extern CFMutableArrayRef DASessionGetCallbackRegister( DASessionRef session );
extern mach_port_t DASessionGetID( DASessionRef session );
extern Boolean DASessionGetOption( DASessionRef session, DASessionOption option );
extern DASessionOptions DASessionGetOptions( DASessionRef session );
extern mach_port_t DASessionGetServerPort( DASessionRef session );
extern Boolean DASessionGetState( DASessionRef session, DASessionState state );
extern CFTypeID DASessionGetTypeID( void );
extern void DASessionInitialize( void );
extern void DASessionQueueCallback( DASessionRef session, DACallbackRef callback );
extern void DASessionRegisterCallback( DASessionRef session, DACallbackRef callback );
extern void DASessionScheduleWithRunLoop( DASessionRef session, CFRunLoopRef runLoop, CFStringRef runLoopMode );
extern void DASessionSetAuthorization( DASessionRef session, AuthorizationRef authorization );
extern void DASessionSetClientPort( DASessionRef session, mach_port_t client );
extern void DASessionSetOption( DASessionRef session, DASessionOption option, Boolean value );
extern void DASessionSetOptions( DASessionRef session, DASessionOptions options, Boolean value );
extern void DASessionSetState( DASessionRef session, DASessionState state, Boolean value );
extern void DASessionUnregisterCallback( DASessionRef session, DACallbackRef callback );
extern void DASessionUnscheduleFromRunLoop( DASessionRef session, CFRunLoopRef runLoop, CFStringRef runLoopMode );
#ifdef __cplusplus
}
#endif
#endif