dxd - dynax driver framework 2.7.0d222
cross platform open source driver development framework
Loading...
Searching...
No Matches
dxd::adapter Class Referenceabstract

PortCls adapter driver. More...

#include <dxd_port.h>

Inheritance diagram for dxd::adapter:
Collaboration diagram for dxd::adapter:

Classes

class  client
 user client: one per control open, mirrors dxd::client More...
class  device
 per-FDO adapter device: miniport subdevices are created in start() More...

Public Member Functions

 adapter (::DRIVER_OBJECT *wdm_driver, ::UNICODE_STRING *registry, const 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 ()
virtual ~adapter ()=default

Public Attributes

const ::GUID guid
 product GUID: device interface and property key
wdm::unicode icon
 endpoint icon: the driver binary's own icon resource 1
const wchar_t * name
 subdevice base name
unsigned int ports = 1
 PcAddAdapterDevice MaxObjects: subdevice capacity per device.
os_result status = not_initialized

Protected Member Functions

virtual devicecreate (::DEVICE_OBJECT *wdm_device, ::DEVICE_OBJECT *wdm_pdo, ::DEVICE_OBJECT *wdm_bus)=0
 device factory

Detailed Description

PortCls adapter driver.

One adapter per driver object, one adapter::device per FDO. Per-device state lives in the PortCls device-extension tail (behind PORT_CLASS_DEVICE_EXTENSION_SIZE). Control opens (empty file name on the device interface) get an adapter::client in FsContext and the device in FsContext2 - KS never sees these file objects, so FsContext2 identifies ours; IRP_MJ_PNP is intercepted for remove-time teardown, everything else stays PortCls' own dispatch.

Constructor & Destructor Documentation

◆ adapter()

dxd::adapter::adapter ( ::DRIVER_OBJECT * wdm_driver,
::UNICODE_STRING * registry,
const wchar_t * name,
const dxd::guid & guid = 0 )
inline
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
Here is the call graph for this function:

◆ ~adapter()

virtual dxd::adapter::~adapter ( )
virtualdefault

Member Function Documentation

◆ create()

virtual device * dxd::adapter::create ( ::DEVICE_OBJECT * wdm_device,
::DEVICE_OBJECT * wdm_pdo,
::DEVICE_OBJECT * wdm_bus )
protectedpure virtual

device factory

◆ operator const ::HANDLE()

dxd::wdm::registry::operator const ::HANDLE ( ) const
inlineinherited
Here is the caller graph for this function:

◆ 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

◆ 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

const ::GUID dxd::adapter::guid

product GUID: device interface and property key

◆ icon

wdm::unicode dxd::adapter::icon

endpoint icon: the driver binary's own icon resource 1

◆ name

const wchar_t* dxd::adapter::name

subdevice base name

◆ ports

unsigned int dxd::adapter::ports = 1

PcAddAdapterDevice MaxObjects: subdevice capacity per device.

◆ status

os_result dxd::adapter::status = not_initialized

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

(c) copyright 2009 dynamic acoustics e.U. generated on

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.