IOHIDEventServiceUserClient.h [plain text]
#ifndef _IOKIT_IOHIDEVENTSERVICEUSERCLIENT_H
#define _IOKIT_IOHIDEVENTSERVICEUSERCLIENT_H
enum IOHIDEventServiceUserClientCommandCodes {
kIOHIDEventServiceUserClientOpen,
kIOHIDEventServiceUserClientClose,
kIOHIDEventServiceUserClientCopyEvent,
kIOHIDEventServiceUserClientSetElementValue,
kIOHIDEventServiceUserClientNumCommands
};
#ifdef KERNEL
#include <IOKit/IOUserClient.h>
#include "IOHIDEventService.h"
class IOHIDEventServiceQueue;
class IOHIDEventServiceUserClient : public IOUserClient
{
OSDeclareDefaultStructors(IOHIDEventServiceUserClient)
private:
static const IOExternalMethodDispatch
sMethods[kIOHIDEventServiceUserClientNumCommands];
IOHIDEventService * _owner;
IOHIDEventServiceQueue * _queue;
IOOptionBits _options;
task_t _client;
void eventServiceCallback( IOHIDEventService * sender,
void * context,
IOHIDEvent * event,
IOOptionBits options);
static IOReturn _open( IOHIDEventServiceUserClient * target,
void * reference,
IOExternalMethodArguments * arguments);
static IOReturn _close( IOHIDEventServiceUserClient * target,
void * reference,
IOExternalMethodArguments * arguments);
static IOReturn _copyEvent(
IOHIDEventServiceUserClient * target,
void * reference,
IOExternalMethodArguments * arguments);
static IOReturn _setElementValue(
IOHIDEventServiceUserClient * target,
void * reference,
IOExternalMethodArguments * arguments);
protected:
virtual IOReturn clientClose( void );
virtual IOService * getService( void );
virtual IOReturn registerNotificationPort(
mach_port_t port,
UInt32 type,
UInt32 refCon );
virtual IOReturn clientMemoryForType(
UInt32 type,
IOOptionBits * options,
IOMemoryDescriptor ** memory );
virtual IOReturn externalMethod(
uint32_t selector,
IOExternalMethodArguments * arguments,
IOExternalMethodDispatch * dispatch,
OSObject * target,
void * reference);
public:
virtual bool initWithTask(task_t owningTask, void * security_id, UInt32 type);
virtual bool start( IOService * provider );
virtual bool didTerminate(IOService *provider, IOOptionBits options, bool *defer);
virtual void free();
virtual IOReturn setProperties( OSObject * properties );
virtual IOReturn open(IOOptionBits options);
virtual IOReturn close();
virtual IOHIDEvent * copyEvent(IOHIDEventType type, IOHIDEvent * matching, IOOptionBits options = 0);
virtual void setElementValue(UInt32 usagePage, UInt32 usage, UInt32 value);
};
#endif
#endif