|
dxd - dynax driver framework 3.0.2
cross platform open source driver development framework
|
KMDF PCI device: the PCI half's interface (PCI devices) on the framework. More...
#include <dxd_kmdf_pci_device.h>
Classes | |
| class | scatter_gather |
Public Member Functions | |
| device(dxd::driver& driver, ::WDFDEVICE wdf_device) | |
| the interrupts made with the framework device object's first device: a successor finds them standing | |
| void | identify(uint64_t id) |
| the OS's identity of the hardware as the puid, until launch() states a persistent one | |
| os_result | notify_clients(const ::GUID& guid) |
| operator const ::HANDLE() const | |
| operator ::DEVICE_OBJECT*() const | |
| operator ::WDFDEVICE() const | |
| operator ::WDFDRIVER() const | |
| ::DEVICE_OBJECT* | pdo() const |
| template<typename transition_t> | |
| os_result | powered(bool on, transition_t&& transition) |
| a power transition, as dxd::power binds the OS's: sleep() ahead of leaving the working state, the transition, wake() once in it - a change of a launched device alone | |
| template<typename type_t> | |
| os_result | property(property::key key, type_t& value) |
| < the device's creation status, not the Parameters key's | |
| 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) |
| template<typename reference_t> | |
| int | release(reference_t& reference) |
| os_result | remove() |
| void | retain() |
| os_result | set(const ::UNICODE_STRING& key, const ::GUID& value) |
| os_result | set(const ::UNICODE_STRING& key, const ::UNICODE_STRING& value, unsigned long type= REG_SZ) |
| 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) |
| void | try_conclude() |
| conclude()s if launched | |
| os_result | try_launch() |
| launch()es unless launched, a failure concluded | |
| template<typename type_t> | |
| unsigned long | type() |
Public Attributes | |
| bool | launched{} |
| const char* | model{} |
| the model's name alike | |
| bool | on{true} |
| char | puid [0x80] {} |
| persistent UID, system unique: the platform takes it from the OS's identity of the device | |
| atomic<int> | references{} |
| os_result | status |
| const char* | vendor{} |
| the vendor's name the desc states, published with the puid for user mode to match by | |
Protected Member Functions | |
| void | conclude() override |
| remove hook, the last word to the hardware | |
| ::NTSTATUS | filter(::WDFIORESREQLIST wdf_requirements) override |
| a memory requirement of length 0 the bus states is dropped: no window answers it | |
| os_result | ioctl(unsigned int ioctl, const void* in, size_t size_in, void* out, size_t size_out, size_t& size) override |
| control I/O, reached through client::ioctl(): the driver answers what the device does not | |
| virtual bool | irq(unsigned int, int64_t) |
| an interrupt of the vector, at its level: claimed, its source quiet, isr() follows in the interrupt's DPC | |
| os_result | irq_enable(bool enable= true) |
| the sources enabled or disabled: the framework connects them in D0 and disconnects them out of it | |
| virtual void | isr(unsigned int) |
| os_result | launch() override |
| start hook, called before any client can reach the device | |
| uint32_t | read32(uint8_t bar, uint64_t offset) const |
| virtual os_result | sleep() |
| virtual void | unplugged() |
| surprise removal hook: the hardware side goes at once, what open clients hold waits for conclude() | |
| virtual os_result | wake() |
| power hooks: a launched device comes back to the working state, and leaves it - its start and its removal are launch() and conclude() | |
| void | write32(uint8_t bar, uint64_t offset, uint32_t value) const |
Static Protected Member Functions | |
| static constexpr bool | removed(uint32_t value) |
| a register read of a device gone from the bus | |
Protected Attributes | |
| bool | removed{} |
| struct dxd::kmdf::device:: { ... } | wdf |
| struct dxd::kmdf::device:: { ... } | wdm |
KMDF PCI device: the PCI half's interface (PCI devices) on the framework.
The interrupts are the framework device object's, made with its first device - one per MSI message the device may be granted, the legacy line the first -: the framework connects them in D0 and binds the new resources at a rebalance, irq() reaches the device object's current device while its irq_enable() lets it, and isr() follows in the interrupt's DPC. The bus's memory requirements of length 0 are dropped ahead of the start.
|
inline |
the interrupts made with the framework device object's first device: a successor finds them standing
|
inlineoverrideprotectedvirtual |
remove hook, the last word to the hardware
Reimplemented from dxd::device.
|
inlineoverrideprotected |
a memory requirement of length 0 the bus states is dropped: no window answers it
|
inlineinherited |
the OS's identity of the hardware as the puid, until launch() states a persistent one
|
inlineoverrideprotectedvirtualinherited |
control I/O, reached through client::ioctl(): the driver answers what the device does not
Reimplemented from dxd::device.
|
inlineprotectedvirtual |
an interrupt of the vector, at its level: claimed, its source quiet, isr() follows in the interrupt's DPC
|
inlineprotected |
the sources enabled or disabled: the framework connects them in D0 and disconnects them out of it
|
inlineprotectedvirtual |
|
inlineoverrideprotectedvirtual |
start hook, called before any client can reach the device
Reimplemented from dxd::device.
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
a power transition, as dxd::power binds the OS's: sleep() ahead of leaving the working state, the transition, wake() once in it - a change of a launched device alone
|
inlineinherited |
< the device's creation status, not the Parameters key's
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlinestaticconstexprprotected |
a register read of a device gone from the bus
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineprotectedvirtualinherited |
Reimplemented in dxd::firewire::controller< super_device_t >, dxd::pci::device, and dxd::pci::device.
|
inlineinherited |
conclude()s if launched
|
inlineinherited |
launch()es unless launched, a failure concluded
|
inherited |
|
inlineprotectedvirtualinherited |
surprise removal hook: the hardware side goes at once, what open clients hold waits for conclude()
Reimplemented in dxd::pci::device, and dxd::platform::device.
|
inlineprotectedvirtualinherited |
power hooks: a launched device comes back to the working state, and leaves it - its start and its removal are launch() and conclude()
Reimplemented in dxd::firewire::controller< super_device_t >, dxd::firewire::platform::device< super_device_t >, dxd::pci::device, and dxd::pci::device.
|
inlineprotected |
|
inherited |
|
inherited |
the model's name alike
|
inherited |
in the working state
|
inherited |
persistent UID, system unique: the platform takes it from the OS's identity of the device
|
inherited |
|
protectedinherited |
the hardware released - removed or rebalanced: the device takes no I/O any more
|
inherited |
|
inherited |
the vendor's name the desc states, published with the puid for user mode to match by
| struct { ... } dxd::kmdf::device::wdf |
| struct { ... } dxd::kmdf::device::wdm |