IWMDMEnumStorage::Next-Methode (mswmdm.h)
Die Next-Methode ruft einen Zeiger auf den nächsten gleichgeordneten Speicher ab.
Syntax
HRESULT Next(
[in] ULONG celt,
[out] IWMDMStorage **ppStorage,
[out] ULONG *pceltFetched
);
Parameter
[in] celt
Anzahl der angeforderten Speicher.
[out] ppStorage
Zeiger auf aufruferseitig zugeordnetes Array von IWMDMStorage-Schnittstellenzeigern . Die Größe dieses Arrays muss IWMDMStorage *[celt] sein. Der Aufrufer muss diese Schnittstellen freigeben, wenn er mit ihnen fertig ist. Um die Zuordnung eines ganzen Arrays zu vermeiden, übergeben Sie einfach die Adresse eines Zeigers an eine IWMDMStorage-Schnittstelle , wie unter Hinweise gezeigt.
[out] pceltFetched
Anzahl der aufgezählten Speicher.
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:
- Com-Standardfehlercodes
- In HRESULT-Werte konvertierte Windows-Fehlercodes
- Windows Media Geräte-Manager Fehlercodes
Hinweise
Windows Media Geräte-Manager delegiert die Speicheraufzählung an den entsprechenden Dienstanbieter. Informationen zur Speicheraufzählung des Dienstanbieters finden Sie unter der IMDSPEnumStorage-Schnittstelle .
Der Speicher-Enumerator spiegelt möglicherweise nicht die Auswirkungen des Einfügens und Entfernens von Medien wider. In diesem Fall sollte die Anwendung ein neues Speicherenumeratorobjekt abrufen, indem sie IWMDMDevice::EnumStorage aufruft , um die aktualisierte Liste abzurufen. Wenn Sie nur eine einzelne Schnittstelle gleichzeitig abrufen möchten, müssen Sie für diese Methode kein Array zuordnen, wie im folgenden Code gezeigt.
Beispiele
Die folgenden beiden C++-Funktionen untersuchen ein Gerät rekursiv. Die erste ist eine Kickoff-Funktion, die die IWMDMEnumStorage-Schnittstelle des Stammgerätespeichers abruft. Dies wird an die rekursive Funktion übergeben, die alle geschachtelten Funktionen untersucht.
// Kickoff function to explore a device.
void ExploreDevice(IWMDMDevice* pDevice)
{
HRESULT hr = S_OK;
// Get a root enumerator.
CComPtr<IWMDMEnumStorage> pEnumStorage;
hr = pDevice->EnumStorage(&pEnumStorage);
RecursiveExploreStorage(pEnumStorage);
HANDLE_HR(hr, "Got a root storage in ExploreDevice.","Couldn't get a root storage in ExploreDevice.");
e_Exit:
return;
}
void RecursiveExploreStorage(IWMDMEnumStorage* pEnumStorage)
{
HRESULT hr = S_OK;
CComPtr<IWMDMStorage> pStorage;
ULONG numRetrieved = 0;
// Loop through all storages in the current storage.
// We don't need to allocate an array to retrieve one
// interface at a time.
while(pEnumStorage->Next(1, &pStorage, &numRetrieved) == S_OK && numRetrieved == 1)
{
// Get the name of the object. The first time this is called on a
// device, it will retrieve '\' as the root folder name.
const UINT MAX_LEN = 255;
WCHAR name[MAX_LEN];
hr = pStorage->GetName((LPWSTR)&name, MAX_LEN);
// TODO: Display the storage name.
// Get metadata for the storage.
if (SUCCEEDED(hr))
GetMetadata(pStorage);
// Find out something about the item.
DWORD attributes = 0;
_WAVEFORMATEX audioFormat;
hr = pStorage->GetAttributes(&attributes, &audioFormat);
HANDLE_HR(hr, "Got storage attributes in RecursivelyExploreStorage.","Couldn't get storage attributes in RecursivelyExploreStorage.");
// If this is a folder, recurse into it.
if (attributes & WMDM_FILE_ATTR_FILE)
// TODO: Display a message indicating that this is a file.
if (attributes & WMDM_FILE_ATTR_FOLDER)
{
// TODO: Display a message indicating that this is a folder.
CComPtr<IWMDMEnumStorage> pEnumSubStorage;
hr = pStorage->EnumStorage(&pEnumSubStorage);
RecursiveExploreStorage(pEnumSubStorage);
}
// Some other useful attributes to check include:
// WMDM_FILE_ATTR_CANDELETE and WMDM_FILE_ATTR_CANPLAY and others to determine what can be done with a storage.
// WMDM_FILE_ATTR_HIDDEN and other attributes to determine display characteristics,
// WMDM_STORAGE_IS_DEFAULT to see if this is the default save location for new files.
pStorage.Release();
} // Get the next storage pointer.
e_Exit:
return;
}
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Windows |
Kopfzeile | mswmdm.h |
Bibliothek | Mssachlp.lib |