For COM classes in the context of ReactOS, I'd recomment the existing
code in Shell components. for declaring and using COM classes from C,
there's code coming from WINE that could serve as an example, and for
proper COM done with C++, we have examples of both ATL-based COM such
as the rshell module, and ATL-free COM such as the netshell dll.
If you can't visit the guys at the hackfest, feel free to pop into
IRC, join #reactos and/or #reactos-dev @ Freenode, and we can guide
you in realtime.
On 9 August 2015 at 17:06, Aleksey Bragin <aleksey(a)reactos.org> wrote:
Hi Andrew,
that's very nice to hear from you and we all are pretty much excited here at
the ReactOS Hackfest in Aachen that you are interested in audio development
again!
If you have a possibility - grab a ticket from London and come straight away
here, as the Hackfest lasts till 13th.
I hope Johannes could give you an overview of that area.
Regards,
Aleksey Bragin
On 09.08.2015 16:40, Andrew Greenwood wrote:
Hi everyone,
Some of you probably remember me. I was involved with trying to get
audio/sound implemented in ReactOS a few years ago.
To be honest, my progress was rather poor, I managed to write a few bits of
code but never really had a proper understanding of kernel/OS development or
CPU/system architectures. Additionally, whilst I could grasp how the
multimedia APIs (MME) in NT4 worked, and how they interacted with the
drivers (audio device X opens device Y and writes buffered data to it) for
Windows 2000 and later, Kernel Streaming was used which partly built on top
of the older implementation but added a load of new stuff.
This complicated matters as firstly, KS uses COM (which I still struggle to
wrap my head around) in kernel-mode, secondly there were multiple components
involved between the application and the hardware (wdmaud.drv -> wdmaud.sys
-> ks.sys -> portcls.sys -> driver as far as I remember), and finally I
really struggled to find example code and thorough documentation describing
how it all worked.
Ultimately I gave up with that and intended to move to another platform to
develop multimedia applications. Not much happened with that.
I remember there were complaints from application developers over Kernel
Streaming offering poor latency – instead developers would turn to other
technologies such as ASIO or DirectSound. So for recent versions of Windows
(Vista onwards?) Microsoft implemented a new, user-mode sound system
(WASAPI) which again uses COM but is pretty nicely documented, with code
samples.
Having done a little reading about this, it renewed my interest. It still
uses COM, and KS.SYS is still present (I assume for compatibility?) but as a
lot of this is implemented in user-space I suspect it’d be easier to
develop/test.
Aside from this, over the past few years I’ve also gained a better
understanding of topics I didn’t know much about previously and I feel more
confident at being able to write lower-level stuff that works properly. I’ve
also developed more of a keen interest in how Windows works.
So basically I’m considering implementing the current Windows audio system
in ReactOS. I’d imagine we don’t need to be too concerned about audio
drivers themselves (at least, initially) as vendors tend to offer these and
it’s not like we need sound immediately post-install!
The only thing I really lack now is knowledge of how to implement COM
classes – at least, outside of using Visual Studio… Anyone got recommended
reading or example code for this?
Andrew
_______________________________________________
Ros-dev mailing list
Ros-dev(a)reactos.org
http://www.reactos.org/mailman/listinfo/ros-dev