Published

Wed 09 Nov 2005 @ 07:29 AM

←Home

Gripes about Microsoft

Reason 1: The supposed versioning of the Remote Access Services API is broken. You pass the address of a structure to a function with the first DWORD of that structure set to the size of the structure. This is supposed to enable RAS (or any similar API) to detect what version you want to work with and deal with it. BUT NO! If you compile a program to use RAS on Windows XP, it will not work on Windows 98. At least not without a lot of gymnastics to figure out what operating system version you are running on and then setting the size appropriately. Why couldn't they just take whatever block of memory you pass them (as long as it is a size that conforms to some standard of the specification) and just use it appropriately? Even then, the only thing I can think of that they should do is make sure the memory is large enough to accommodate the original version of the structure. If there are extra bytes, leave them alone, or zero fill them.

Reason 2: Multimedia timers are a way to get relatively high precision timing for events. I need to use them for animation in a program I'm working on for both Windows XP as well as Windows 98. I took my program to a Windows 98 machine to test it, and kept getting garbage back from the API. I assumed I was doing something wrong for a couple of hours. Finally it dawned on me to reboot the machine, and suddenly, it started working correctly.

Reason 3: The documentation in the platform SDK lies. Ok, I've known that for a long time, but it bit me today. One of the RAS structures is documented to have a certain number of fields when used with Windows XP. It doesn't. The documentation is not the same as the structure as described in the platform SDK header files. {sigh}

Go Top