The following method for C++ shows how to get the DVR Sink object from the ltmmPlayControl object and use it to copy DVR buffered data to a new file.
void PlayerDVRCopyToFile(IltmmPlay *pPlay) { IUnknown *punk = NULL; HRESULT hr = pPlay->GetSubObject(ltmmPlay_Object_SourceFilter, &punk); if(SUCCEEDED(hr) && NULL != punk) { ILMDVRSink *pDvrSink; hr = punk->QueryInterface(IID_ILMDVRSink, (LPVOID*)&pDvrSink); punk->Release(); if (SUCCEEDED(hr)) { double start, stop, total; // Get available range to copy pDvrSink->GetAvailabilityInfo(&start, &stop, &total); // Copy the data to the new file pDvrSink->CopyBufferToFile(L"C:\\Temp\\DVR\\Copied_Capture.mpg", start, stop); // Release the interface and free string data pDvrSink->Release(); } } }