Writing a network audio driver in Windows CE – Part 3 – Bandwidth

            This blog will discuss bandwidth, the second bullet point in my first blog about networked audio drivers.             In an audio driver that plays directly to local hardware (local audio driver or LAD), bandwidth is usually not a concern since it is only dependent on internal components (disk bandwidth, bus speed, processor speed, DMAs, etc) which…

0

When should I write to device.exe instead of services.exe?

By default, if you have some long running system service, you should target it to run in services.exe.  To quote the services.exe white paper  when it described why putting say a web server in device.exe was a bad idea: However, using device.exe also posed some problems. A lot of other components run in device.exe, including…

9

Default LSPs in WM 5.0

In WM 5.0 2 new LSPs are present by default, the dtpt_lsp and the autobind_lsp. This article will discuss the dtpt_lsp and the next article will talk about the autobind_lsp. Desktop Passthrough (DTPT)  is the  technology that allows the CE device to talk on the desktop network while Active Sync is running. DTPT is implemented using a…

0

Writing a network audio driver in Windows CE – Part 2 – Timing

[Revision 10/20/05 – minor changes to make content clearer]   This blog will discuss timing, the first bullet point in my first blog about networked audio drivers. In an audio driver that plays directly to local hardware (LAD), the mechanism for timing is usually relatively simple. The driver writes to hardware buffers, stops writing when…

0

Why aren’t my virtual roots showing up in the CE Web Server?

When configuring the CE Web Server’s virtual root settings in the registry, there are a number of mistakes people make that cause their VRoot to not show up the way they expect.  I’m targeting this both at OEMs who will typically put these registry settings into project.reg, and PPC/SP ISVs who will be putting the…

1

How do clients know a service is ready?

Often clients start before servers, and need to be signaled when the service is ready. In this post we’ll  find a good solution to this problem. Approach #1: Server signals a named event, clients waits for the event.     Server:         //Create manual reset event for service started         hEvent = CreateEvent(NULL,TRUE,FALSE, SRV_STARTED_EVENT);         SetEvent(hEvent)…

1

Writing a network audio driver in Windows CE – Part 1

[Updated to reflect status of other parts of this blog]           In this series of blogs I will discuss the implementation of an audio driver that starts from the wavdev sample and streams audio over a network in real time. In part 1 I will list the main things that one has to worry…

0

Windows CE Server components released for Windows Mobile!

There are a few popular (and extremely cool!) server components from Windows CE 5.0 that you can download and install on Windows Mobile 5.0: the Web Server, UPnP Device, UPnP Control Point, MSMQ and the PNRP service. Since a large number of CE OS components are not shipped in Windows Mobile due to RAM and ROM constraints, I know…

6

How I save myself weeks of horrible debugging each year

Being in networking and middleware, I have to deal with locking / critical sections a lot.  Multi-threaded code is inherently tricky to get right.  You have problems with deadlock – which are straightforward to debug usually assuming you have a good debugger and you hit it in your office and not the field :).  The…

0

Where is IIDFromString on Windows CE?

IIDFromString is a function exported by ole32.lib in order to get a GUID from a WCHAR* string.  I get asked why doesn’t Windows CE ole32.lib support this functionality, since it’s a reasonably common thing to do. The answer is CE does support this function, but unfortunately it’s only available in the DCOM builds of our COM. …

1