Metodo IWMDMStorage4::GetReferences (mswmdm.h)
Il metodo GetReferences recupera una matrice di puntatori agli oggetti IWMDMStorage a cui punta questa risorsa di archiviazione. Un album o una playlist astratta viene in genere archiviato come raccolta di riferimenti in un dispositivo MTP.
Sintassi
HRESULT GetReferences(
[out] DWORD *pdwRefs,
[out] IWMDMStorage ***pppIWMDMStorage
);
Parametri
[out] pdwRefs
Puntatore al conteggio dei valori recuperati da pppIWMDMStorage. Se l'oggetto non ha riferimenti, verrà restituito zero e la funzione restituirà S_OK.
[out] pppIWMDMStorage
Puntatore a un puntatore alla matrice di puntatori di interfaccia IWMDMStorage che rappresentano i riferimenti in un archivio. Tali riferimenti possono, ad esempio, rappresentare elementi in una playlist o in un album. La matrice recuperata è nello stesso ordine in cui vengono visualizzate nell'oggetto stesso. La memoria per questa matrice viene allocata da Windows Media Gestione dispositivi. Quando l'applicazione chiamante ha completato l'accesso a questa matrice, deve prima chiamare Release su tutti i puntatori di interfaccia e quindi liberare la memoria della matrice usando CoTaskMemFree.
Valore restituito
Il metodo restituisce un valore HRESULT. Tutti i metodi di interfaccia in Windows Media Gestione dispositivi possono restituire una delle classi di codici di errore seguenti:
- Codici di errore COM standard
- Codici di errore di Windows convertiti in valori HRESULT
- Codici di errore di Windows Media Gestione dispositivi
Commenti
Windows Media Gestione dispositivi delega al provider di servizi sottostante l'attività di aggiunta e rimozione dei riferimenti in una risorsa di archiviazione. Gli oggetti con riferimenti fanno riferimento a oggetti astratti, ad esempio playlist astratte o album; le cartelle non sono considerate come riferimenti.
Esistono due tipi di eliminazioni asincrone che possono verificarsi e causare errori in questo metodo. Se un riferimento a una risorsa di archiviazione è stato eliminato dopo che l'applicazione l'ha recuperata e l'applicazione tenta di usare il riferimento, la chiamata al metodo restituirà WMDM_E_INTERFACEDEAD. Se il file a cui fa riferimento è stato eliminato, viene restituito S_FALSE.
Esempio
Il codice C++ seguente esegue una query sui riferimenti di una risorsa di archiviazione (pStorage).
// Get references.
CComQIPtr<IWMDMStorage4> pStorage4(pStorage);
if (pStorage4 != NULL)
{
WCHAR name[100];
DWORD numRefs = 0;
IWMDMStorage** parrReferences;
hr = pStorage4->GetReferences(&numRefs, &parrReferences);
for(int i = 0; i < numRefs; i++)
{
ZeroMemory(name, sizeof(name));
hr = parrReferences[i]->GetName(name, (sizeof(name) / sizeof(WCHAR)) - 1);
if (hr == S_OK)
// TODO: Display the name.
parrReferences[i]->Release();
}
// Free the memory.
if (parrReferences != NULL)
CoTaskMemFree(parrReferences);
}
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Windows |
Intestazione | mswmdm.h |
Libreria | Mssachlp.lib |