IltmmTargetFormat::CreateTargetFormats Example for C

HRESULT CreateTargetFormats_Example (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; 
}