I am using the MSDK for video playback. I created a bitstream as in the sample_decode, and for each encoded frame I simply copy it to the bitstream and call the next decode. For our needs, for each decoded frame, we need to answer the question "which encoded frame does it correspond to?" With another decoder we use, it is possible to supply a custom timestamp alongside the data which ends up in the decoded frame, allowing us to track which decoded frame corresponded to which encoded frame. I haven't found how to do this or something equivalent with the Intel MSDK.
I have tried remembering which surface index is used for each call to Decode, but for a video with b-frames it simply gives me the encoded frames in file order rather than time order - perhaps the fact that QueryIOSurf says to use just one surface with this video is the root issue?