dxd - dynax driver framework 3.0.2
cross platform open source driver development framework
Loading...
Searching...
No Matches
dxd::dmus::miniport< stream_t > Class Template Reference

dmus::miniport: one DirectMusic port per MIDI pin, its streams over the backend's ring 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, typename stream_t::backend& backend, unsigned int stream_idx, 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

Detailed Description

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

dmus::miniport: one DirectMusic port per MIDI pin, its streams over the backend's ring

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, typename stream_t::backend& backend, unsigned int stream_idx, const typename stream_t::stream_desc& stream_desc, unsigned int idx)
inline

Member Function Documentation

◆ create_stream()

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:

◆ DataRangeIntersection()

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

◆ GetDescription()

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

IMiniport

Here is the call graph for this function:

◆ Init()

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

◆ NewStream()

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:

◆ Service()

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

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: