IWMSyncReader2::SetRangeByFrameEx method

The SetRangeByFrameEx method configures the synchronous reader to read a portion of the file specified by a starting video frame number and a number of frames to read. This method also retrieves the presentation time of the requested frame number.


HRESULT SetRangeByFrameEx(
  [in]  WORD     wStreamNum,
  [in]  QWORD    qwFrameNumber,
  [in]  LONGLONG cFramesToRead,
  [out] QWORD    *pcnsStartTime


wStreamNum [in]

Stream number.

qwFrameNumber [in]

Frame number at which to begin playback. The first frame in a file is number 1.

cFramesToRead [in]

Count of frames to read. Pass 0 to continue playback to the end of the file.

pcnsStartTime [out]

Start time in 100-nanosecond units.

Return value

If the method succeeds, it returns S_OK. If it fails, it returns an HRESULT error code.


By getting the presentation time of the requested frame number, you can avoid problems caused by seeking to a delta frame. The synchronous reader begins delivering samples at key frame boundaries. You can ignore frames until you reach the presentation time of your target frame.

The file must be frame-indexed. If the call is successful, all streams are synchronized to the same position based on time.


Minimum supported client

Windows 2000 Professional [desktop apps only]

Minimum supported server

Windows 2000 Server [desktop apps only]


Windows Media Format 9 Series SDK, or later versions of the SDK


Wmsdkidl.h (include Wmsdk.h)


WMStubDRM.lib (if you use DRM)

See also

IWMSyncReader2 Interface