IOSCSIDeviceClass.h [plain text]
#ifndef _IOKIT_IOSCSIDeviceClass_H
#define _IOKIT_IOSCSIDeviceClass_H
#include <IOKit/cdb/IOCDBLib.h>
#include <IOKit/cdb/IOSCSILib.h>
#include "IOSCSIIUnknown.h"
class IOSCSIDeviceClass : public IOSCSIIUnknown
{
private:
IOSCSIDeviceClass(IOSCSIDeviceClass &src);
void operator =(IOSCSIDeviceClass &src);
protected:
IOSCSIDeviceClass();
virtual ~IOSCSIDeviceClass();
enum constants {
kMaxPoolSize = 8
};
static IOCFPlugInInterface sIOCFPlugInInterfaceV1;
static IOCDBDeviceInterface sCDBDeviceInterfaceV1;
static IOSCSIDeviceInterface sSCSIDeviceInterfaceV1;
struct InterfaceMap fCDBDevice;
struct InterfaceMap fSCSIDevice;
io_service_t fService;
io_connect_t fConnection;
mach_port_t fAsyncPort;
CFRunLoopSourceRef fCFSource;
bool fIsOpen;
bool fIsLUNZero;
public:
static IOCFPlugInInterface **alloc();
virtual HRESULT queryInterface(REFIID iid, void **ppv);
virtual IOReturn probe(CFDictionaryRef propertyTable,
io_service_t service, SInt32 *order);
virtual IOReturn start(CFDictionaryRef propertyTable,
io_service_t service);
virtual IOReturn createAsyncEventSource(CFRunLoopSourceRef *source);
virtual CFRunLoopSourceRef getAsyncEventSource();
virtual IOReturn createAsyncPort(mach_port_t *port);
virtual mach_port_t getAsyncPort();
virtual IOReturn getInquiryData(void *inquiryBuffer,
UInt32 inquiryBufSize,
UInt32 *inquiryDataSize);
virtual IOReturn open();
virtual IOReturn close();
virtual IOCDBCommandStruct **allocCommand();
virtual IOReturn abort();
virtual IOReturn reset();
virtual IOReturn holdQueue(UInt32 queueType);
virtual IOReturn releaseQueue(UInt32 queueType);
virtual IOReturn flushQueue(UInt32 queueType, IOReturn rc);
virtual IOReturn
notifyIdle(void *target, IOCDBCallbackFunction callback, void *refcon);
virtual IOReturn setTargetParms(SCSITargetParms *targetParms);
virtual IOReturn getTargetParms(SCSITargetParms *targetParms);
virtual IOReturn setLunParms(SCSILunParms *lunParms);
virtual IOReturn getLunParms(SCSILunParms *lunParms);
protected:
static inline IOSCSIDeviceClass *getThis(void *self)
{ return (IOSCSIDeviceClass *) ((InterfaceMap *) self)->obj; };
static IOReturn deviceProbe(void *self,
CFDictionaryRef propertyTable,
io_service_t service, SInt32 *order);
static IOReturn deviceStart(void *self,
CFDictionaryRef propertyTable,
io_service_t service);
static IOReturn deviceStop(void *self);
static IOReturn deviceCreateAsyncEventSource(void *self,
CFRunLoopSourceRef *source);
static CFRunLoopSourceRef deviceGetAsyncEventSource(void *self);
static IOReturn deviceCreateAsyncPort(void *self, mach_port_t *port);
static mach_port_t deviceGetAsyncPort(void *self);
static IOReturn deviceGetInquiryData(void *self,
void *inquiryBuffer,
UInt32 inquiryBufSize,
UInt32 *inquiryDataSize);
static IOReturn deviceOpen(void *self);
static IOReturn deviceClose(void *self);
static IOCDBCommandStruct **deviceAllocCommand(void *self);
static IOReturn deviceAbort(void *self);
static IOReturn deviceReset(void *self);
static IOReturn deviceHoldQueue(void *self, UInt32 queueType);
static IOReturn deviceReleaseQueue(void *self, UInt32 queueType);
static IOReturn deviceFlushQueue(void *self, UInt32 queueType, IOReturn rc);
static IOReturn deviceNotifyIdle(void *self,
void *target, IOCDBCallbackFunction callback, void *refcon);
static IOReturn deviceSetTargetParms(void *self, SCSITargetParms *targetParms);
static IOReturn deviceGetTargetParms(void *self, SCSITargetParms *targetParms);
static IOReturn deviceSetLunParms(void *self, SCSILunParms *lunParms);
static IOReturn deviceGetLunParms(void *self, SCSILunParms *lunParms);
};
#endif