dxd - dynax driver framework 2.6.0d200
cross platform open source driver development framework
Loading...
Searching...
No Matches
dx::service::client::driver< device_t > Class Template Referenceabstract

#include <dx_service_client_driver.h>

+ Inheritance diagram for dx::service::client::driver< device_t >:
+ Collaboration diagram for dx::service::client::driver< device_t >:

Public Member Functions

virtual DX_PRAGMA_IGNORE_RETURN_VALUE_END bool boot () try
 
 dx_catchall_rethrow (, "%s: handle: %p, access:%x service: %p", id.c_str(), handle, access, service) manager(const std
 
 dx_catchall_rethrow (, "%s: handle: %p, service: %p", id.c_str(), handle, service) void install(const std
 
DX_PRAGMA_IGNORE_RETURN_VALUE_END void exception (const class exception &exception, bool filtered=false) const noexcept override try
 notification exception handler
 
virtual void exception (const exception &exception, bool filtered=false) const noexcept=0
 notification exception handler
 
void initialize (const std::string &id="", const ::DWORD(&access)[2]={SC_MANAGER_ALL_ACCESS, SERVICE_ALL_ACCESS}, const std::string desc="", const std::string &path="") try
 
virtual bool shutdown () try
 client driver::shutdown/boot(): override to shutdown/boot host driver
 
dx::service::manager::status promoted this (::DWORD value)
 
dx::service::manager::enumerate promoted this (::DWORD value)
 

Public Attributes

elements
 STL member.
 
keys
 STL member.
 
bool launched {}
 
log log
 
decltype(device_t::preference) preference
 
const char * product_id
 
dx::service::manager::statusthis
 
dx::service::manager::enumeratethis
 
uint32_t version
 

Protected Types

typedef decltype(device_t::id) device_id_t
 

Protected Member Functions

void add (const device_id_t &device_id) override try
 adds a new device to the device list
 
dx_catchall_rethrow() using super void add (const super::device_id_t &device_id, const typename device_t::desc_t &desc) try
 
virtual void arrived ()
 notify device arrivals completed stub
 
virtual void arrived (device_t &)
 notify specific device arrival stub
 
 catch (...)
 
 catch (...)
 
 catch (...)
 
 catch (...)
 
DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN catch (const dx::exception &__dx_exception)
 
DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN catch (const dx::exception &__dx_exception)
 
DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN catch (const dx::exception &__dx_exception)
 
DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN catch (const dx::exception &__dx_exception)
 
 catch (const std::exception &__std_exception)
 
 catch (const std::exception &__std_exception)
 
 catch (const std::exception &__std_exception)
 
 catch (const std::exception &__std_exception)
 
DX_PRAGMA_IGNORE_RETURN_VALUE_END void clear () noexcept try
 replaces std::map::clear to call virtual notification methods
 
void conclude () noexcept override
 conclude notification: object will be removed. If you overwrite conclude() you also need to overwrite destructor and check if its needed to be called from there.
 
 driver (const match &matching_ids, const char *id, dx::log log={})
 the service client driver interface class constructor
 
 dx_catchall_handler (this,) virtual driver &operator<<(std
 restores device settings
 
void info (std::ostream &os) noexcept override
 log object class information
 
void launch () override
 launch notification: object mounted and ready to use
 
virtual operator bool () const noexcept
 
virtual driveroperator<< (const char *file)
 
virtual driveroperator>> (const char *file) const
 
virtual driveroperator>> (std::ostream &ostream) const
 saves device tree
 
DX_PRAGMA_IGNORE_RETURN_VALUE_END void remove (const device_id_t &device_id) override try
 finds and removes a device from the device list
 
virtual void removed () noexcept
 notify device removals completed stub
 
virtual void removed (device_t &) noexcept
 notify specific device removal stub
 
virtual void scan () try
 
void sleep () override
 < notify system will sleep
 
void wake () override
 

Protected Attributes

::DWORD access {}
 
dx::promoted< uint32_tconnection_id
 
std::string desc
 
::SC_HANDLE handle {}
 
std::string id
 
dx_catchall_rethrow() void remove(const super typedef decltype(matching_idsmatch
 non-virtual remove hides super::remove() to be used to permamently eliminate a virtual device
 
std::vector< dx::guidmatching_ids
 
std::string path
 
::SC_HANDLE service {}
 

Member Typedef Documentation

◆ device_id_t

template<typename device_t >
typedef decltype(device_t::id) dx::map::driver< device_t >::device_id_t
protectedinherited

Constructor & Destructor Documentation

◆ driver()

template<class device_t >
dx::service::client::driver< device_t >::driver ( const match & matching_ids,
const char * id,
dx::log log = {} )
inlineprotected

the service client driver interface class constructor

Parameters
matching_idsthe matching ASIO client driver IDs identifying the driver interface
idASIO client driver ID
loglog settings

Member Function Documentation

◆ add() [1/2]

template<typename device_t >
void dx::map::driver< device_t >::add ( const device_id_t & device_id)
inlineoverrideprotectedvirtualinherited

adds a new device to the device list

Exceptions
dx::exception

Implements dx::driver< decltype(device_t::id), decltype(device_t::preference)>.

Reimplemented in dx::virtuel::driver< device_t >, and dx::proxy::driver< device_t >.

+ Here is the call graph for this function:

◆ add() [2/2]

template<class device_t >
dx_catchall_rethrow() using super void dx::service::client::driver< device_t >::add ( const super::device_id_t & device_id,
const typename device_t::desc_t & desc )
inlineprotected
+ Here is the caller graph for this function:

◆ arrived() [1/2]

◆ arrived() [2/2]

template<typename device_t >
virtual void dx::map::driver< device_t >::arrived ( device_t & )
inlineprotectedvirtualinherited

◆ boot()

virtual DX_PRAGMA_IGNORE_RETURN_VALUE_END bool dx::driver< decltype(device_t::id) , decltype(device_t::preference) >::boot ( )
inlinevirtualinherited

◆ catch() [1/12]

template<typename device_t >
dx::map::driver< device_t >::catch ( ...)
inlineprotectedinherited

◆ catch() [2/12]

template<typename device_t >
dx::map::driver< device_t >::catch ( ...)
inlineprotectedinherited

◆ catch() [3/12]

template<typename device_t >
dx::map::driver< device_t >::catch ( ...)
inlineprotectedinherited

◆ catch() [4/12]

template<typename device_t >
dx::map::driver< device_t >::catch ( ...)
inlineprotectedinherited

◆ catch() [5/12]

template<typename device_t >
DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN dx::map::driver< device_t >::catch ( const dx::exception & __dx_exception)
inlineprotectedinherited

◆ catch() [6/12]

template<typename device_t >
DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN dx::map::driver< device_t >::catch ( const dx::exception & __dx_exception)
inlineprotectedinherited

◆ catch() [7/12]

template<typename device_t >
DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN dx::map::driver< device_t >::catch ( const dx::exception & __dx_exception)
inlineprotectedinherited

◆ catch() [8/12]

template<typename device_t >
DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN dx::map::driver< device_t >::catch ( const dx::exception & __dx_exception)
inlineprotectedinherited

◆ catch() [9/12]

template<typename device_t >
dx::map::driver< device_t >::catch ( const std::exception & __std_exception)
inlineprotectedinherited

◆ catch() [10/12]

template<typename device_t >
dx::map::driver< device_t >::catch ( const std::exception & __std_exception)
inlineprotectedinherited

◆ catch() [11/12]

template<typename device_t >
dx::map::driver< device_t >::catch ( const std::exception & __std_exception)
inlineprotectedinherited

◆ catch() [12/12]

template<typename device_t >
dx::map::driver< device_t >::catch ( const std::exception & __std_exception)
inlineprotectedinherited

◆ clear()

template<typename device_t >
DX_PRAGMA_IGNORE_RETURN_VALUE_END void dx::map::driver< device_t >::clear ( )
inlineprotectednoexceptinherited

replaces std::map::clear to call virtual notification methods

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ conclude()

template<class device_t >
void dx::service::client::driver< device_t >::conclude ( )
inlineoverrideprotectedvirtualnoexcept

conclude notification: object will be removed. If you overwrite conclude() you also need to overwrite destructor and check if its needed to be called from there.

Reimplemented from dx::map::driver< device_t >.

◆ dx_catchall_handler()

template<typename device_t >
dx::map::driver< device_t >::dx_catchall_handler ( this ) &
inlineprotectedinherited

restores device settings

◆ dx_catchall_rethrow() [1/2]

dx::service::manager::dx_catchall_rethrow ( "%s: handle: % p,
access:%x service:%p" ,
id. c_str(),
handle ,
access ,
service  ) const
inlineinherited

◆ dx_catchall_rethrow() [2/2]

dx::service::manager::dx_catchall_rethrow ( "%s: handle: % p,
service:%p" ,
id. c_str(),
handle ,
service  ) const
inlineinherited

◆ exception() [1/2]

DX_PRAGMA_IGNORE_RETURN_VALUE_END void dx::driver< decltype(device_t::id) , decltype(device_t::preference) >::exception ( const class exception & exception,
bool filtered = false ) const
inlineoverridenoexceptinherited

notification exception handler

◆ exception() [2/2]

◆ info()

template<class device_t >
void dx::service::client::driver< device_t >::info ( std::ostream & os)
inlineoverrideprotectedvirtualnoexcept

log object class information

Reimplemented from dx::map::driver< device_t >.

◆ initialize()

void dx::service::manager::initialize ( const std::string & id = "",
const ::DWORD(&) access[2] = {SC_MANAGER_ALL_ACCESS, SERVICE_ALL_ACCESS},
const std::string desc = "",
const std::string & path = "" )
inlineinherited

◆ launch()

template<class device_t >
void dx::service::client::driver< device_t >::launch ( )
inlineoverrideprotectedvirtual

launch notification: object mounted and ready to use

Reimplemented from dx::map::driver< device_t >.

◆ operator bool()

template<class device_t >
virtual dx::service::client::driver< device_t >::operator bool ( ) const
inlineprotectedvirtualnoexcept

◆ operator<<()

template<typename device_t >
virtual driver & dx::map::driver< device_t >::operator<< ( const char * file)
inlineprotectedvirtualinherited
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ operator>>() [1/2]

template<typename device_t >
virtual driver & dx::map::driver< device_t >::operator>> ( const char * file) const
inlineprotectedvirtualinherited
+ Here is the call graph for this function:

◆ operator>>() [2/2]

template<typename device_t >
virtual driver & dx::map::driver< device_t >::operator>> ( std::ostream & ostream) const
inlineprotectedvirtualinherited

saves device tree

Reimplemented in dx::coreaudio::driver< device_t >.

+ Here is the caller graph for this function:

◆ remove()

template<typename device_t >
DX_PRAGMA_IGNORE_RETURN_VALUE_END void dx::map::driver< device_t >::remove ( const device_id_t & device_id)
inlineoverrideprotectedvirtualinherited

finds and removes a device from the device list

Exceptions
dx::exception

Implements dx::driver< decltype(device_t::id), decltype(device_t::preference)>.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ removed() [1/2]

template<typename device_t >
virtual void dx::driver< device_id_t, preference_t >::removed ( )
inlineprotectedvirtualnoexceptinherited

notify device removals completed stub

Reimplemented from dx::driver< decltype(device_t::id), decltype(device_t::preference)>.

+ Here is the caller graph for this function:

◆ removed() [2/2]

template<typename device_t >
virtual void dx::map::driver< device_t >::removed ( device_t & )
inlineprotectedvirtualnoexceptinherited

◆ scan()

template<class device_t >
virtual void dx::service::client::driver< device_t >::scan ( )
inlineprotectedvirtual
Todo
virtual::driver::launch(): fix preference[] and remove ":" test hack
+ Here is the call graph for this function:

◆ shutdown()

virtual bool dx::driver< decltype(device_t::id) , decltype(device_t::preference) >::shutdown ( )
inlinevirtualinherited

client driver::shutdown/boot(): override to shutdown/boot host driver

Reimplemented in dx::coreaudio::driver< device_t >.

◆ sleep()

template<typename device_t >
void dx::map::driver< device_t >::sleep ( )
inlineoverrideprotectedinherited

< notify system will sleep

notify system wake completed stub

+ Here is the call graph for this function:

◆ this() [1/2]

dx::service::manager::status promoted dx::service::manager::this ( ::DWORD value)
inlineinherited

◆ this() [2/2]

dx::service::manager::enumerate promoted dx::service::manager::this ( ::DWORD value)
inlineinherited

◆ wake()

template<typename device_t >
void dx::map::driver< device_t >::wake ( )
inlineoverrideprotectedinherited
+ Here is the call graph for this function:

Member Data Documentation

◆ access

::DWORD dx::service::manager::access {}
protectedinherited

◆ connection_id

template<class device_t >
dx::promoted<uint32_t> dx::service::client::driver< device_t >::connection_id
protected

◆ desc

std::string dx::service::manager::desc
protectedinherited

◆ elements

T std::map< K, T >::elements
inherited

STL member.

◆ handle

::SC_HANDLE dx::service::manager::handle {}
protectedinherited

◆ id

std::string dx::service::manager::id
protectedinherited

◆ keys

K std::map< K, T >::keys
inherited

STL member.

◆ launched

bool dx::object::launched {}
inherited

◆ log

log dx::driver< decltype(device_t::id) , decltype(device_t::preference) >::log
inherited

◆ match

template<class device_t >
dx_catchall_rethrow () void remove( const super typedef decltype(matching_ids) dx::service::client::driver< device_t >::match
protected

non-virtual remove hides super::remove() to be used to permamently eliminate a virtual device

◆ matching_ids

template<class device_t >
std::vector<dx::guid> dx::service::client::driver< device_t >::matching_ids
protected

◆ path

std::string dx::service::manager::path
protectedinherited

◆ preference

decltype(device_t::preference) dx::driver< decltype(device_t::id) , decltype(device_t::preference) >::preference
inherited

◆ product_id

const char* dx::driver< decltype(device_t::id) , decltype(device_t::preference) >::product_id
inherited

◆ service

::SC_HANDLE dx::service::manager::service {}
protectedinherited

◆ this [1/2]

dx::service::manager::status* dx::service::manager::this
inherited

◆ this [2/2]

dx::service::manager::enumerate* dx::service::manager::this
inherited

◆ version

uint32_t dx::driver< decltype(device_t::id) , decltype(device_t::preference) >::version
inherited

The documentation for this class was generated from the following file:

(c) copyright 2009 dynamic acoustics e.U. generated on Fri Feb 20 2026

a closed source license may be obtained by requesting a written permission from dynamic acoustics e.U.
however - governmental use generally and military use especially is strictly prohibited though.