[though note that you also have to put it back in paused state afterward, which this patch is missing]
I'm not sure if Pause() are necessary, the Pause() in the document is to restart the thread and start pushing data again. We have IWMReader_Start() which did this.
Well, you can't leave the filter in stopped state. SetPositions() isn't supposed to change the state. If you are going to call IBaseFilter_Stop() then you need to call IBaseFilter_Pause(). If you're only going to call IWMReader_Start() then you should only call IWMReader_Stop().
OK, I see, I'll change it in next version.