#ifdef __MACH__
#define user_client DX_CLIENT
#endif
#ifdef __MACH__
virtual bool start(::IOService* provider){
device= OSDynamicCast(user_device, provider);
if(!super::start(provider))
return false;
return true;
}
#endif
dxd::os_result launch() override{
return super::launch();
}
super::conclude();
}
unsigned int ioctl,
const void* in,
size_t size_in,
void* out,
size_t size_out,
size_t& size
)override{
switch(ioctl){
case my_namespace::version:{
try(status= (!size_in && size_out==
sizeof(
unsigned int))? dxd::ok:
dxd::
invalid);
break;
}
}
}
public:
#ifdef WIN32
#endif
};
#ifdef __MACH__
#endif
#ifdef WIN32
dxd::client*user_device::client_create(){
return new user_client(
this);};
#endif
Definition iokit/dxd_device.h:360
#define DX_VERSION32
Definition dx_macros.h:72
unsigned int uint32_t
Definition dxd_base.h:110
#define device
IOKit: generic device.
Definition iokit/dxd_device.h:84
ioctl
DX IOCTLs convetion char namespace indentifier: lower case user mode: upper case kernel.
Definition macOS/dx_platform.h:119
dynax driver framework kernel namespace
Definition dxd_endian.h:29
@ invalid
Definition iokit/dxd_platform.h:106
@ out
Definition iokit/dxd_memory.h:41
The plist containing the user client magic: [...]
<key>IOKitPersonalities</key>
<dict>
<key>DX_PRODUCT</key>
<dict>
[...]
<key>IOUserClientClass</key>
<string>DX_CLIENT</string>
[...]
</dict>
</dict>
[...]