IWMDMStorage4::GetReferences-Methode (mswmdm.h)
Die GetReferences-Methode ruft ein Array von Zeigern auf IWMDMStorage-Objekte ab, auf die dieser Speicher verweist. Ein abstraktes Album oder eine Wiedergabeliste wird in der Regel als Sammlung von Verweisen auf einem MTP-Gerät gespeichert.
Syntax
HRESULT GetReferences(
[out] DWORD *pdwRefs,
[out] IWMDMStorage ***pppIWMDMStorage
);
Parameter
[out] pdwRefs
Zeiger auf die Anzahl der von pppIWMDMStorage abgerufenen Werte. Wenn das Objekt keine Verweise aufweist, gibt dies null zurück, und die Funktion gibt S_OK zurück.
[out] pppIWMDMStorage
Zeiger auf einen Zeiger auf das Array von IWMDMStorage-Schnittstellenzeigern , die Verweise in einem Speicher darstellen. Solche Verweise können beispielsweise Elemente in einer Wiedergabeliste oder einem Album darstellen. Das abgerufene Array befindet sich in derselben Reihenfolge wie im Objekt selbst. Der Arbeitsspeicher für dieses Array wird von Windows Media Geräte-Manager zugewiesen. Wenn die aufrufende Anwendung den Zugriff auf dieses Array beendet hat, muss sie zuerst Release für alle Schnittstellenzeiger aufrufen und dann den Arrayspeicher mit CoTaskMemFree freigeben.
Rückgabewert
Die Methode gibt ein HRESULT zurück. Alle Schnittstellenmethoden in Windows Media Geräte-Manager können eine der folgenden Klassen von Fehlercodes zurückgeben:
- Standard-COM-Fehlercodes
- In HRESULT-Werte konvertierte Windows-Fehlercodes
- Windows Media Geräte-Manager Fehlercodes
Hinweise
Windows Media Geräte-Manager delegiert an den zugrunde liegenden Dienstanbieter die Aufgabe, die Verweise in einem Speicher hinzuzufügen und zu entfernen. Objekte mit Verweisen beziehen sich auf abstrakte Objekte wie abstrakte Wiedergabelisten oder Alben; -Ordner werden nicht als Verweise betrachtet.
Es gibt zwei Arten von asynchronen Löschungen, die in dieser Methode zu Fehlern führen können. Wenn ein Verweis auf einen Speicher gelöscht wurde, seit die Anwendung ihn abgerufen hat, und die Anwendung versucht, den Verweis zu verwenden, gibt der Methodenaufruf WMDM_E_INTERFACEDEAD zurück. Wenn die Datei, auf die sich der Verweis bezieht, gelöscht wurde, wird S_FALSE zurückgegeben.
Beispiele
Der folgende C++-Code fragt die Verweise eines Speichers (pStorage) ab.
// 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);
}
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Windows |
Kopfzeile | mswmdm.h |
Bibliothek | Mssachlp.lib |