Jefferson Carpenter jeffersoncarpenter2@gmail.com writes:
I knew it was possible to get DRM interfaces because I have an application that queries for an IWMDRMReader (I forget 1, 2, or 3) over and over and over until S_OK is returned. To begin finding out why the return value is sometimes S_OK and sometimes E_NOINTERFACE, I compiled an exe that runs WMCreateReader and queries for the IWMDRMReader2 interface, and then stepped through the assembly. Turns out, the value at that memory location is checked inside of QueryInterface.
That's not an acceptable way of figuring things out.
If you have an application that uses this, you can look at what the app is doing, and try to reproduce that behavior in a test case; but the Microsoft DLLs have to be treated as black boxes. You can call public APIs and see what they return, but you can't look inside the box. In particular, disassembling the code is strictly forbidden. I'm afraid this means I can no longer accept any patches of yours implementing this functionality.