Méthode IWMDMMetaData ::GetItemCount (mswmdm.h)
La méthode GetItemCount récupère le nombre total de propriétés détenues par l’interface.
Syntaxe
HRESULT GetItemCount(
[out] UINT *iCount
);
Paramètres
[out] iCount
Pointeur vers un entier qui reçoit le nombre total de propriétés de métadonnées stockées par l’interface.
Valeur retournée
Cette méthode retourne un code HRESULT. Toutes les méthodes d’interface dans Windows Media Gestionnaire de périphériques peuvent retourner l’une des classes suivantes de codes d’erreur :
- Codes d’erreur COM standard
- Codes d’erreur Windows convertis en valeurs HRESULT
- Codes d’erreur Gestionnaire de périphériques Windows Media
Remarques
Cette méthode peut être utilisée avec QueryByIndex pour énumérer toutes les propriétés d’un stockage ou d’un appareil.
Exemples
Le code suivant récupère le nombre de propriétés dans une interface IWMDMMetaData (pMetadata) et tente de les récupérer toutes en les indexant et en les imprimant. Il utilise une macro de gestion des erreurs personnalisée BREAK_HR.
//
// Loop through all metadata properties, and print out the value of each.
//
BYTE* value;
WMDM_TAG_DATATYPE type;
UINT len = 0;
UINT count = 0;
WCHAR* name;
// Get the number of metadata items.
hr = pMetadata->GetItemCount(&count);
BREAK_HR(hr, "Got a metadata count in GetMetadata.", "Couldn't get a metadata count in GetMetadata.");
for(;count > 0; count--)
{
// Get the metadata property by index.
WCHAR* name;
hr = pMetadata->QueryByIndex(count-1, &name, &type, &value, &len);
if (SUCCEEDED(hr))
{
// TODO: Display the property name.
CoTaskMemFree(name);
// Print out the value of the property, according to the value type.
switch (type)
{
case WMDM_TYPE_QWORD:
case WMDM_TYPE_DWORD:
case WMDM_TYPE_WORD:
// TODO: Display the value.
break;
case WMDM_TYPE_STRING:
// TODO: Display the value.
// Release the method-allocated property value memory.
if (SUCCEEDED(hr))
CoTaskMemFree(value);
break;
case WMDM_TYPE_BOOL:
// TODO: Display the value.
break;
case WMDM_TYPE_BINARY:
// TODO: Display the value.
break;
case WMDM_TYPE_DATE:
{
WMDMDATETIME *val = (WMDMDATETIME*)value;
/ /TODO: Display the month, day, and year.
}
break;
case WMDM_TYPE_GUID:
{
WCHAR strGuid[64];
StringFromGUID2(reinterpret_cast<GUID&>(value),(LPOLESTR)strGuid, 64);
/ /TODO: Display the GUID.
}
break;
default:
// TODO: Display a message indicating that the
// application could not understand the returned value type.
}
}
else // Couldn't get the metadata property at index count - 1.
// TODO: Display a message indicating that the
// application couldn't retrieve a value for the index.
// Clear the WMDM-allocated memory.
if (value)
CoTaskMemFree(value);
}
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Windows |
En-tête | mswmdm.h |
Bibliothèque | Mssachlp.lib |