IOATABlockStorageDevice.h [plain text]
#ifndef _IO_ATA_BLOCKSTORAGE_DEVICE_H_
#define _IO_ATA_BLOCKSTORAGE_DEVICE_H_
#include <IOKit/IOTypes.h>
#include <IOKit/ata/IOATACommand.h>
#include <IOKit/storage/IOBlockStorageDevice.h>
class IOATABlockStorageDriver;
class IOATABlockStorageDevice : public IOBlockStorageDevice
{
OSDeclareDefaultStructors ( IOATABlockStorageDevice )
protected:
IOATABlockStorageDriver * fProvider;
struct ExpansionData
{
OSSet * fClients;
};
ExpansionData * reserved;
#define fClients reserved->fClients
virtual bool attach ( IOService * provider );
virtual void detach ( IOService * provider );
virtual bool handleOpen ( IOService * client, IOOptionBits options, void * access );
virtual void handleClose ( IOService * client, IOOptionBits options );
virtual bool handleIsOpen ( const IOService * client ) const;
public:
virtual IOReturn setProperties ( OSObject * properties );
virtual IOReturn doAsyncReadWrite ( IOMemoryDescriptor * buffer,
UInt32 block,
UInt32 nblks,
IOStorageCompletion completion );
virtual IOReturn doSyncReadWrite ( IOMemoryDescriptor * buffer,
UInt32 block,
UInt32 nblks );
virtual IOReturn doEjectMedia ( void );
virtual IOReturn doFormatMedia ( UInt64 byteCapacity );
virtual UInt32 doGetFormatCapacities ( UInt64 * capacities,
UInt32 capacitiesMaxCount ) const;
virtual IOReturn doLockUnlockMedia ( bool doLock );
virtual IOReturn doSynchronizeCache ( void );
virtual char * getVendorString ( void );
virtual char * getProductString ( void );
virtual char * getRevisionString ( void );
virtual char * getAdditionalDeviceInfoString ( void );
virtual IOReturn reportBlockSize ( UInt64 * blockSize );
virtual IOReturn reportEjectability ( bool * isEjectable );
virtual IOReturn reportLockability ( bool * isLockable );
virtual IOReturn reportMediaState ( bool * mediaPresent, bool * changed );
virtual IOReturn reportPollRequirements ( bool * pollIsRequired,
bool * pollIsExpensive );
virtual IOReturn reportMaxReadTransfer ( UInt64 blockSize, UInt64 * max );
virtual IOReturn reportMaxValidBlock ( UInt64 * maxBlock );
virtual IOReturn reportMaxWriteTransfer ( UInt64 blockSize, UInt64 * max );
virtual IOReturn reportRemovability ( bool * isRemovable );
virtual IOReturn reportWriteProtection ( bool * isWriteProtected );
OSMetaClassDeclareReservedUsed ( IOATABlockStorageDevice, 1 )
virtual IOReturn sendSMARTCommand ( IOATACommand * command );
OSMetaClassDeclareReservedUnused ( IOATABlockStorageDevice, 2 );
OSMetaClassDeclareReservedUnused ( IOATABlockStorageDevice, 3 );
OSMetaClassDeclareReservedUnused ( IOATABlockStorageDevice, 4 );
OSMetaClassDeclareReservedUnused ( IOATABlockStorageDevice, 5 );
OSMetaClassDeclareReservedUnused ( IOATABlockStorageDevice, 6 );
OSMetaClassDeclareReservedUnused ( IOATABlockStorageDevice, 7 );
OSMetaClassDeclareReservedUnused ( IOATABlockStorageDevice, 8 );
OSMetaClassDeclareReservedUnused ( IOATABlockStorageDevice, 9 );
OSMetaClassDeclareReservedUnused ( IOATABlockStorageDevice, 10 );
OSMetaClassDeclareReservedUnused ( IOATABlockStorageDevice, 11 );
OSMetaClassDeclareReservedUnused ( IOATABlockStorageDevice, 12 );
OSMetaClassDeclareReservedUnused ( IOATABlockStorageDevice, 13 );
OSMetaClassDeclareReservedUnused ( IOATABlockStorageDevice, 14 );
OSMetaClassDeclareReservedUnused ( IOATABlockStorageDevice, 15 );
OSMetaClassDeclareReservedUnused ( IOATABlockStorageDevice, 16 );
};
#endif