#ifndef _IOKIT_IOUSBIUNKNOWN_H
#define _IOKIT_IOUSBIUNKNOWN_H
#include <IOKit/IOCFPlugIn.h>
#include <IOKit/usb/IOUSBLib.h>
__BEGIN_DECLS
extern void *IOUSBLibFactory(CFAllocatorRef allocator, CFUUIDRef typeID);
__END_DECLS
class IOUSBIUnknown {
public:
struct InterfaceMap {
IUnknownVTbl *pseudoVTable;
IOUSBIUnknown *obj;
};
private:
IOUSBIUnknown(IOUSBIUnknown &src); void operator =(IOUSBIUnknown &src);
IOUSBIUnknown() : refCount(1) { };
protected:
static int factoryRefCount;
static void factoryAddRef();
static void factoryRelease();
IOUSBIUnknown(void *unknownVTable);
virtual ~IOUSBIUnknown();
static HRESULT genericQueryInterface(void *self, REFIID iid, void **ppv);
static UInt32 genericAddRef(void *self);
static UInt32 genericRelease(void *self);
UInt32 _versionNumberFromString(CFStringRef versStr);
Boolean _isDigit(UniChar aChar);
protected:
UInt32 refCount;
InterfaceMap iunknown;
public:
virtual HRESULT queryInterface(REFIID iid, void **ppv) = 0;
virtual UInt32 addRef();
virtual UInt32 release();
virtual IOReturn GetIOUSBLibVersion(NumVersion *ioUSBLibVersion, NumVersion *usbFamilyVersion);
};
#endif