dxd - dynax driver framework
cross platform open source driver development framework
dxd::adapter< miniport_t > Class Template Reference

adapter driver skeleton More...

#include <dxd_port.h>

+ Inheritance diagram for dxd::adapter< miniport_t >:
+ Collaboration diagram for dxd::adapter< miniport_t >:

Public Member Functions

 adapter (::DRIVER_OBJECT *wdm_driver, ::UNICODE_STRING *registry, wchar_t *name, const dxd::guid &guid=0)
 
 operator const ::HANDLE () const
 
template<typename type_t >
os_result query (const ::UNICODE_STRING &key, type_t &value)
 
template<typename key_t , typename type_t >
os_result query (key_t *key, type_t &value)
 
os_result remove ()
 
os_result set (const ::UNICODE_STRING &key, const ::GUID &value)
 
os_result set (const ::UNICODE_STRING &key, const ::UNICODE_STRING &value)
 
os_result set (const ::UNICODE_STRING &key, const char *value)
 
os_result set (const ::UNICODE_STRING &key, const wchar_t *value)
 
os_result set (const ::UNICODE_STRING &key, unsigned int value)
 
template<typename key_t , typename type_t >
os_result set (key_t *key, const type_t &value)
 
template<typename type_t >
unsigned long type ()
 

Public Attributes

unsigned int ports =1
 miniport subdevices More...
 
os_result status =not_initialized
 

Protected Member Functions

os_result create_miniport (wchar_t *,::IResourceList *, unsigned int)
 abstract IMiniport factory More...
 
virtual os_result create_miniport (wchar_t *name,::IResourceList *wdm_reslist, unsigned int port)
 miniport factory More...
 
virtual os_result launch ()
 miniport factory More...
 

Protected Attributes

::GUID guid
 
wchar_t * name =nullptr
 
::DEVICE_OBJECT * wdm_bus =nullptr
 
::DEVICE_OBJECT * wdm_device =nullptr
 
::DEVICE_OBJECT * wdm_pdo =nullptr
 

Detailed Description

template<class miniport_t = ::IMiniport>
class dxd::adapter< miniport_t >

adapter driver skeleton

Constructor & Destructor Documentation

◆ adapter()

template<class miniport_t = ::IMiniport>
dxd::adapter< miniport_t >::adapter ( ::DRIVER_OBJECT *  wdm_driver,
::UNICODE_STRING *  registry,
wchar_t *  name,
const dxd::guid & guid  = 0 
)
inline

< GUID identifying the type of port
< interface that is being requested and can be one of the following: CLSID_PortDMus, CLSID_PortMidi, CLSID_PortTopology, CLSID_PortWaveCyclic, CLSID_PortWavePci

Parameters
wdm_driverA pointer to a DRIVER_OBJECT structure that represents the driver's WDM driver object.
registryA pointer to an UNICODE_STRING structure that specifies the path to the driver's Parameters key in the registry.
nameAn internal unique name

Member Function Documentation

◆ create_miniport() [1/2]

os_result dxd::adapter<::IMiniport >::create_miniport ( wchar_t *  ,
::IResourceList *  ,
unsigned int   
)
protected

abstract IMiniport factory

◆ create_miniport() [2/2]

template<class miniport_t >
os_result dxd::adapter< miniport_t >::create_miniport ( wchar_t *  name,
::IResourceList *  wdm_reslist,
unsigned int  port 
)
protectedvirtual

miniport factory

Ignores by default subdevice index parameters and creates the miniport with outer unknown zero for compatibilty with Microsofts IMiniport interfaces.

◆ launch()

template<class miniport_t = ::IMiniport>
virtual os_result dxd::adapter< miniport_t >::launch ( )
inlineprotectedvirtual

miniport factory

◆ operator const ::HANDLE()

dxd::wdm::registry::operator const ::HANDLE ( ) const
inlineinherited

◆ query() [1/2]

template<typename type_t >
os_result dxd::wdm::registry::query ( const ::UNICODE_STRING &  key,
type_t &  value 
)
inlineinherited

◆ query() [2/2]

template<typename key_t , typename type_t >
os_result dxd::wdm::registry::query ( key_t *  key,
type_t &  value 
)
inlineinherited
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ remove()

os_result dxd::wdm::registry::remove ( )
inlineinherited
+ Here is the caller graph for this function:

◆ set() [1/6]

os_result dxd::wdm::registry::set ( const ::UNICODE_STRING &  key,
const ::GUID &  value 
)
inlineinherited
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set() [2/6]

os_result dxd::wdm::registry::set ( const ::UNICODE_STRING &  key,
const ::UNICODE_STRING &  value 
)
inlineinherited

◆ set() [3/6]

os_result dxd::wdm::registry::set ( const ::UNICODE_STRING &  key,
const char *  value 
)
inlineinherited
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set() [4/6]

os_result dxd::wdm::registry::set ( const ::UNICODE_STRING &  key,
const wchar_t *  value 
)
inlineinherited
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ set() [5/6]

os_result dxd::wdm::registry::set ( const ::UNICODE_STRING &  key,
unsigned int  value 
)
inlineinherited
+ Here is the caller graph for this function:

◆ set() [6/6]

template<typename key_t , typename type_t >
os_result dxd::wdm::registry::set ( key_t *  key,
const type_t &  value 
)
inlineinherited
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ type()

template<typename type_t >
unsigned long dxd::wdm::registry::type ( )
inherited

Member Data Documentation

◆ guid

template<class miniport_t = ::IMiniport>
::GUID dxd::adapter< miniport_t >::guid
protected

◆ name

template<class miniport_t = ::IMiniport>
wchar_t* dxd::adapter< miniport_t >::name =nullptr
protected

◆ ports

template<class miniport_t = ::IMiniport>
unsigned int dxd::adapter< miniport_t >::ports =1

miniport subdevices

◆ status

template<class miniport_t = ::IMiniport>
os_result dxd::adapter< miniport_t >::status =not_initialized

◆ wdm_bus

template<class miniport_t = ::IMiniport>
::DEVICE_OBJECT* dxd::adapter< miniport_t >::wdm_bus =nullptr
protected

◆ wdm_device

template<class miniport_t = ::IMiniport>
::DEVICE_OBJECT* dxd::adapter< miniport_t >::wdm_device =nullptr
protected

◆ wdm_pdo

template<class miniport_t = ::IMiniport>
::DEVICE_OBJECT* dxd::adapter< miniport_t >::wdm_pdo =nullptr
protected

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

(c) copyright 2009 dynamic acoustics e.U. generated on Fri Jun 18 2021

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.