I used the MF_ProtectedPlayback sample untouched under Vista SDK 1.0.
When compiled it to x86 code and used it under Vista x86, everything works fine.
When compiled it to x86 code and used it under Vista x64, MFCreatePMPMediaSession failed to initialize.
When compiled it to x64 code and used it under Vista x64, MFCreatePMPMediaSession passed however IMFMediaSession::SetTopology returned a failed event called "The object invoked has disconnected from its clients."
The media file I tested is the superspeedway.wmv from the Microsoft website. Media player plays it ok under Vista x64.
Please help. What could be the reason

Why protectedplauback works under Vista x86 while not working under Vista x64?
fbalas
For question 1, MFPMPSESSION_UNPROTECTED_PROCESS works. If dwCreationFlags==0, then the MFCreatePMPMediaSession call returns failed. This is x86 code under Vista x64 Business version. I am not too surprised that if this code path does not work.
For question 2, yes, I see mfpmp.exe when WMP plays the WMV file. Also, no matter dwCreationFlags==0 or MFPMPSESSION_UNPROTECTED_PROCESS, the playback shows an error message: HRESULT=0xC00D36FA (SINK failed). This is the native x64 code path under Vista x64 Business version. The WMV file is unprotected. How do I make SINK work
EliteSniper177
Two questions:
1. When you call MFCreatePMPMediaSession, what is the value of dwCreationFlags that you pass in What happens when you set it to MFPMPSESSION_UNPROTECTED_PROCESS
2. When you play that WMV file through WMP, is there a process called mfpmp.exe running during playback
Marco Minerva
I still don't have a great answer for you. Using a 32-bit application to do playback in the mfpmp process on a 64-bit machine should work fine -- this is in fact exactly what WMP is doing.
I would have suspected that perhaps your application is trying to load something into the 64bit mfpmp that makes it unhappy, but you say that you're running a completely vanilla version of MFProtectedPlayback.
We're going to need some more time to investigate... I'll reply when we have something more to say.
Shepherd
XW,
For each of your failure cases (x86 app on x64 and x64 app on x64), can you do the following:
1. Run eventvwr.msc
2. In the left pane, drill down to Applications and Services Logs -> Microsoft -> Windows -> CodeIntegrity -> Operational
3. From the actions in the right pane, click "Clear Log..."
4. Run your scenario that errors out.
5. Hit F5 in eventvwr.msc (or close and reopen eventvwr.msc). What errors do you see in the CodeIntegrity->Operational log
6. Also in the first case (MFPMPSession fails to initialize) what is the error code you get
-Sumedh