IltmmWMProfile::get_Version Example for C

For complete code, refer to the CNVWM demo.

LPTSTR OLE2A(LPCOLESTR lpw)
{
   static CHAR convert[512];

   if(!lpw)
      return NULL;

   convert[0] = '\0';

   WideCharToMultiByte(CP_ACP, 0, lpw, -1, convert, 512, NULL, NULL);

   return convert;
}

BOOL IltmmWMProfile_get_Version_Example ( )
{
   long count = 0; 
   long streamCount = 0; 
   long versionNum = 0; 
   long lVersion; 
   char data[10]; 
   IltmmWMProfile *pProfile = NULL; 
   IltmmWMProfileManager *pProfileManager = NULL; 
   BSTR bstrString; 
   int i;


   // Create a profile manager
   HRESULT hr = CoCreateInstance(&CLSID_ltmmWMProfileManager, NULL, CLSCTX_INPROC_SERVER, &IID_IltmmWMProfileManager, (void**) &pProfileManager); 

   if(FAILED(hr)) 
   {
      return TRUE; 
   }

   // show only system profiles for version ltmmWMT_VER_4_0
   IltmmWMProfileManager_get_SystemProfileVersion(pProfileManager, &lVersion); 

   if(lVersion != ltmmWMT_VER_4_0) 
   {
      IltmmWMProfileManager_Release(pProfileManager); 
      return TRUE; 
   }

   hr = IltmmWMProfileManager_get_SystemProfileCount(pProfileManager, &count); 
   if(FAILED(hr)) 
   {
      IltmmWMProfileManager_Release(pProfileManager); 
      return TRUE; 
   }

   for(i = 0; i < count; i++)
   {
      hr = IltmmWMProfileManager_LoadSystemProfile(pProfileManager, i, &pProfile); 
      if(FAILED(hr)) 
      {
         IltmmWMProfileManager_Release(pProfileManager); 
         return TRUE; 
      }

      // Display the name
      IltmmWMProfile_get_Name(pProfile, &bstrString); 
      printf ("%s", OLE2A(bstrString)); 
      SysFreeString(bstrString); 

      // Add the description, version and the stream count
      IltmmWMProfile_get_Description(pProfile, &bstrString); 
      printf ("%s", OLE2A(bstrString)); 
      SysFreeString(bstrString); 

      IltmmWMProfile_get_Version(pProfile, &versionNum); 
      switch(versionNum) 
      {
      case ltmmWMT_VER_4_0: 
         printf ("%s", "ltmmWMT_VER_4_0");
         break; 
      case ltmmWMT_VER_7_0: 
         printf ("%s", "ltmmWMT_VER_7_0");
         break; 
      case ltmmWMT_VER_8_0: 
         printf ("%s", "ltmmWMT_VER_8_0");
         break; 
      case ltmmWMT_VER_9_0: 
         printf ("%s", "ltmmWMT_VER_9_0");
         break; 
      default: 
         printf ("%s", "UNKNOWN");
         break; 
      };

      // Display the number of streams
      IltmmWMProfile_get_StreamCount(pProfile, &streamCount); 
      printf ("%s", ltoa(streamCount, data, 10)); 

      IltmmWMProfile_Release(pProfile); 
      pProfile = NULL; 
   }

   IltmmWMProfileManager_Release(pProfileManager); 
   pProfileManager = NULL; 

   return TRUE; 
}