IltmmTargetFormat::CreateTargetFormats Example for C

HRESULT CreateTargetFormats(IltmmCapture* pCapture, HWND hWnd) 
{
   IltmmTargetFormats*  pformats = NULL; 
   IltmmTargetFormat*   pformat  = NULL; 
   IUnknown* pDICOMFilter; 
   VARIANT_BOOL vb; 

   HRESULT hr = IltmmCapture_get_TargetFormats (pCapture, &pformats); 
   if(FAILED(hr)) 
   {
      return hr; 
   }
   
   hr = IltmmTargetFormats_Item(pformats, ltmmCapture_TargetFormat_DICOM, &pformat); 
   if(FAILED(hr)) 
   {
      IltmmTargetFormats_Release(pformats); 
      return hr; 
   }
 
IltmmTargetFormat_get_UseFilterCache (pformat, &vb); 
   hr = IltmmTargetFormat_put_UseFilterCache (pformat, VARIANT_TRUE); 
   if(FAILED(hr)) 
   {
      IltmmTargetFormat_Release(pformat); 
      IltmmTargetFormats_Release(pformats); 
      return hr; 
   }

   /// get the DICOM filter for private use
   hr = IltmmTargetFormat_GetCacheObject (pformat, ltmmTargetFormat_Object_Mux, &pDICOMFilter); 
   if(FAILED(hr)) 
   {
      IltmmTargetFormat_Release(pformat); 
      IltmmTargetFormats_Release(pformats); 
      return hr; 
   }

   IltmmTargetFormat_HasCacheDialog (pformat, ltmmTargetFormat_Dlg_Mux, &vb); 
   if (vb == VARIANT_TRUE) 
      IltmmTargetFormat_ShowCacheDialog (pformat, ltmmTargetFormat_Dlg_Mux, (long)hWnd); 

   IltmmTargetFormat_Release(pformat); 
   IltmmTargetFormats_Release(pformats); 
   IUnknown_Release(pDICOMFilter); 

   return S_OK; 
}