dxd - dynax driver framework  3211
cross platform open source driver development framework
dxd::dmus::miniport< stream_t > Class Template Reference

dmus::miniport More...

#include <dxd_portcls_audio.h>

+ Inheritance diagram for dxd::dmus::miniport< stream_t >:
+ Collaboration diagram for dxd::dmus::miniport< stream_t >:

Public Member Functions

 miniport (const wchar_t *portname, const ::DEVICE_OBJECT *wdm_bus, const ::DEVICE_OBJECT *wdm_pdo, const typename stream_t::stream_desc &stream_desc, unsigned int idx)

Public Attributes

os_result status =not_initialized

Protected Member Functions

::IMXF * create_stream (::IUnknown *unknown,::IAllocatorMXF *allocator,::IMasterClock *master_clock)
::NTSTATUS __stdcall DataRangeIntersection (unsigned long,::KSDATARANGE *,::KSDATARANGE *, unsigned long, void *, unsigned long *)
::NTSTATUS __stdcall GetDescription (::PCFILTER_DESCRIPTOR **out_filter) override
::NTSTATUS __stdcall Init (::IUnknown *adapter, ::IResourceList *, ::IPortDMus *port, ::IServiceGroup **service_group) override final
::NTSTATUS __stdcall NewStream (::IMXF **stream, ::IUnknown *unknown, ::POOL_TYPE, unsigned long, ::DMUS_STREAM_TYPE stream_type, ::KSDATAFORMAT *format, ::IServiceGroup **service_group, ::IAllocatorMXF *allocator, ::IMasterClock *master_clock, unsigned long long *schedule_prefetch) override final
void __stdcall Service () override final

Private Attributes

const unsigned int idx
const ::DEVICE_OBJECT * wdm_bus

Detailed Description

template<typename stream_t>
class dxd::dmus::miniport< stream_t >



Constructor & Destructor Documentation

◆ miniport()

template<typename stream_t >
dxd::dmus::miniport< stream_t >::miniport ( const wchar_t *  portname,
const ::DEVICE_OBJECT *  wdm_bus,
const ::DEVICE_OBJECT *  wdm_pdo,
const typename stream_t::stream_desc &  stream_desc,
unsigned int  idx 

Member Function Documentation

◆ create_stream()

template<typename stream_t >
::IMXF* dxd::dmus::miniport< stream_t >::create_stream ( ::IUnknown *  unknown,
::IAllocatorMXF *  allocator,
::IMasterClock *  master_clock 

◆ DataRangeIntersection()

template<typename stream_t >
::NTSTATUS __stdcall dxd::dmus::miniport< stream_t >::DataRangeIntersection ( unsigned  long,
unsigned  long,
void *  ,
unsigned long *   

◆ GetDescription()

template<typename stream_t >
::NTSTATUS __stdcall dxd::dmus::miniport< stream_t >::GetDescription ( ::PCFILTER_DESCRIPTOR **  out_filter)


in(): compile only: statics can't be conditionally initialized. move to be a member!

◆ Init()

template<typename stream_t >
::NTSTATUS __stdcall dxd::dmus::miniport< stream_t >::Init ( ::IUnknown *  adapter,
::IResourceList *  ,
::IPortDMus *  port,
::IServiceGroup **  service_group 


reference IPortDMus,

create obligatory IServiceGroup and reference it


◆ NewStream()

template<typename stream_t >
::NTSTATUS __stdcall dxd::dmus::miniport< stream_t >::NewStream ( ::IMXF **  stream,
::IUnknown *  unknown,
unsigned  long,
::DMUS_STREAM_TYPE  stream_type,
::KSDATAFORMAT *  format,
::IServiceGroup **  service_group,
::IAllocatorMXF *  allocator,
::IMasterClock *  master_clock,
unsigned long long *  schedule_prefetch 

Thats the only place the midiport needs the dummy IServiceGroup member for. The DMUS_STREAM_MIDI_CAPTURE stream will removed again when not providing an IServiceGroup.

◆ Service()

template<typename stream_t >
void __stdcall dxd::dmus::miniport< stream_t >::Service ( )

Member Data Documentation

◆ status

template<typename stream_t >
os_result dxd::dmus::miniport< stream_t >::status =not_initialized

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

(c) copyright 2009 dynamic acoustics e.U. generated on Sat Aug 22 2020

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.