I am usually very supportive of MS and their products, but this is one area that I think MS needs to work on. 

My problem in particular is with the Windows Media Device Manager SDK.  It seems as though it was an after thought and somebody rushed to finish it up in a few hours at the end of a work day.  It is extremely vague both in the documentation about the product and with the examples themselves.

I started working with it about 3 weeks ago when I was contacted to develop software that would interact with windows media compatible devices.  I cannot believe I still have hair left on my head.

Step 1: start by reading the SDK, and trying to set up vc++ the way it says to, only, 3 libs files that it says to use do not even exist.  After deciding that maybe this was an error, I move on without them.

Step 2: go about writing some authentication code for the WMDM when I find out, "uh oh, you need a license". No big deal, the key.c file says you cannot interact with WMDM at all without a VALID key.  Ok, call the company, "hey we need a license"....wasted time.

Step 3:  I open up the key.c file from the example source and its says something totally different. Turns out you do not need a valid key to interact with the dev manager...more wasted time.

Step 4:  finally after days of trial and error I get the core functionality working, only by the grace of god as I was coding blind....yet again, improper documentation = wasted time.

Step 5: I figure, "hey maybe the windows media device manager 10 beta SDK might have some updated material."  WRONG.  Someone just copied and pasted the WMDM 9 SDK and renamed it to 10 Beta.  The only difference I could find was the mention of adding playlists or some bs.

Step 6: dazed and bewildered by this beast,I finally somehow manage to get most of it working by trial and error, somewhat, when I come across a problem reading from a device.  Let me just check and see what the SDK says about this, "hrm, nothing."  No mention of the error, no mention that maybe the device manufacturer does not have drivers for reading data from the device....more wasted time

Step 7: decide its time to grab some metadata from these files on the device to spice things up.  A little hesitant I follow the advice in the SDK about reading metadata.  Now, there are, I think 6 types that metadata are categorized in, WORD, DWORD, QWORD, BINARY,STRING and GUID.  Great, easy enough, but, which are in what category, the doc only mentions like 10, what about the others?...more wasted time trying to figure that out.

Honestly I cannot remember the total amount of errors and contradiction between what the SDK says to do and the example provided, but there were many.  Is there some kind of non-communication from the dev team and the people who write the SDK?  Do they live in seperate worlds?

On top of that, there is not one mention of someone to contact from the windows media group.  This is not the case with some other product SDKs from MS.  I remember writing the DirectX team a few years back about an issue and was happy when they responded promptly to my request.

This is my biggest beef with MS, documentation.