Sorry for the late reply. I don't check this account very often.
You're most welcome, and thanks for the compliment
Hmm. I did forget to tell about an issue in the mf project. In my first stab at implementing everything I thought was needed, I discovered that the version of IMFPresentationDescriptor used by H2V was different from the one in the Windows SDK (6.0.5383.1.1) which I used. This manifested itself as certain calls beeing off, ie. it was making ::GetMetadata calls with obviously invalid arguments. The quick solution was to remove the function from the SDK headers. A cleaner solution would have been to create a new interface and rename all references, but hacking the headers was less work.
Also, regarding detours. Since the 2.1 version went commercial, they instated a requirement that you also load a dummy DLL (detoured.dll) whenever you use detours. Which I find redundant. So I used the elder version, 1.5. The API's haven't changed (IIRC) apart from the requirement of loading the dummy DLL. So if you can't find the old version you'll have to take that into consideration.
The wrapper classes such as CMFTopology and CAudioSessionManager inherit from interfaces (IMFTopology and IAudioSessionManager respectively) defined in the Windows SDK. The only reason why either class would be abstract, is if the interfaces have changed. If you look at the compiler error in the output view, it should tell you which members makes the class abstract.
That being the case, you've got the choice of hacking the headers or creating your own interfaces. If you're planning on using any of these interfaces in your own software, then I would strongly advice against hacking the headers.
Apparently that enum has been removed from the SDK: http://forums.microsoft.com/MSDN/Sho...16582&SiteID=1
The link provides an alternative definition of the removed values.
It looks like they've been doing some compatibility breaking changes to the SDK. The easiest thing might be to track down 6.0.5383.1.1.WindowsSDK_Vista_idw.DVD.Rel.img unless you're up for creating your own set of interfaces and typedefs
There's probably one more thing I should mention. If you're planning to have a go at Live then there's something you need to know. Once I had the game starting up. It would randomly crash, without affecting the operation of the game itself. I tracked this down to being a thread in the Live component, making invalid reads/writes to memory. However since it didn't have any effect on the game itself, I decided to catch the exception, using an unhandled exception filter (WowUnhandledExceptionFilter) and skip the faulting instruction upon failure. I can't say what implications this will have on the operation of Live, but I would think it has some significance.
Furthermore there's a fix for the Gravemind level glitch by grue697, which you could integrate into the source code.
Apparently ReadFile on Vista is capable of doing larger reads than previous versions. This causes the ReadFile API to fail on XP.
Bookmarks