dxd - dynax driver framework  2675
cross platform open source driver development framework
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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) overridefinal
 
::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) overridefinal
 
void __stdcall Service () overridefinal
 

Private Attributes

const unsigned int idx
 
const ::DEVICE_OBJECT * wdm_bus
 

Detailed Description

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

dmus::miniport

generic_audio.png

Constructor & Destructor Documentation

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 
)
inline

Member Function Documentation

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

+ Here is the caller graph for this function:

template<typename stream_t >
::NTSTATUS __stdcall dxd::dmus::miniport< stream_t >::DataRangeIntersection ( unsigned  long,
::KSDATARANGE *  ,
::KSDATARANGE *  ,
unsigned  long,
void *  ,
unsigned long *   
)
inlineprotected
template<typename stream_t >
::NTSTATUS __stdcall dxd::dmus::miniport< stream_t >::GetDescription ( ::PCFILTER_DESCRIPTOR **  out_filter)
inlineoverrideprotected

IMiniport

Todo:
in(): compile only: statics can't be conditionally initialized. move to be a member!
template<typename stream_t >
::NTSTATUS __stdcall dxd::dmus::miniport< stream_t >::Init ( ::IUnknown *  adapter,
::IResourceList *  ,
::IPortDMus *  port,
::IServiceGroup **  service_group 
)
inlinefinaloverrideprotected

IMiniportDMus

reference IPortDMus,

create obligatory IServiceGroup and reference it

http://msdn.microsoft.com/en-us/library/ff536882(v=vs.85).aspx

template<typename stream_t >
::NTSTATUS __stdcall dxd::dmus::miniport< stream_t >::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 
)
inlinefinaloverrideprotected

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.

+ Here is the call graph for this function:

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

Member Data Documentation

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 Tue Dec 4 2018

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.