Freigeben über


IEnumPortableDeviceObjectIDs::Next-Methode (portabledeviceapi.h)

Die Next-Methode ruft die nächsten eine oder mehrere Objekt-IDs in der Enumerationssequenz ab.

Syntax

HRESULT Next(
  [in]      ULONG  cObjects,
  [in, out] LPWSTR *pObjIDs,
  [in, out] ULONG  *pcFetched
);

Parameter

[in] cObjects

Eine Anzahl der angeforderten Objekte.

[in, out] pObjIDs

Ein Array von LPWSTR-Zeigern , die jeweils eine abgerufene Objekt-ID angeben. Der Aufrufer muss ein Array von cObjects LPWSTR-Elementen zuordnen. Der Aufrufer muss sowohl das Array als auch die zurückgegebenen Zeichenfolgen freigeben. Die Zeichenfolgen werden durch Aufrufen von CoTaskMemFree freigegeben.

[in, out] pcFetched

Bei der Eingabe wird dieser Parameter ignoriert. Bei der Ausgabe die Anzahl der tatsächlich abgerufenen IDs. Wenn keine Objekt-IDs freigegeben werden und der Rückgabewert S_FALSE ist, gibt es keine weiteren Objekte, die aufgelistet werden müssen.

Rückgabewert

Die Methode gibt ein HRESULT zurück. Mögliches Werte (aber nicht die Einzigen) sind die in der folgenden Tabelle.

Rückgabecode BESCHREIBUNG
S_OK
Die Methode wurde erfolgreich ausgeführt.
S_FALSE
Es gibt keine weiteren Objekte, die aufgelistet werden müssen.

Hinweise

Wenn weniger als die angeforderte Anzahl von Elementen in der Sequenz verbleibt, ruft diese Methode die verbleibenden Elemente ab. Die Anzahl der tatsächlich abgerufenen Elemente wird über pcFetched zurückgegeben (es sei denn, der Aufrufer hat für diesen Parameter NULL übergeben). Enumerierte Objekte sind alle Peers. Das heißt, das Aufzählen von untergeordneten Elementen eines Objekts führt nur direkte untergeordnete Objekte auf, nicht enkelkindliche oder tiefere Objekte.

Beispiele


// This number controls how many object identifiers are requested during each call
// to IEnumPortableDeviceObjectIDs::Next()
#define NUM_OBJECTS_TO_REQUEST  10

// Recursively called function which enumerates using the specified
// object identifier as the parent.
void RecursiveEnumerate(LPCWSTR wszParentObjectID, IPortableDeviceContent* pContent)
{
    HRESULT                       hr             = S_OK;
    IEnumPortableDeviceObjectIDs* pEnumObjectIDs = NULL;

    if ((wszParentObjectID == NULL) ||
        (pContent          == NULL))
    {
        return;
    }

    // wszParentObjectID is the object identifier of the parent being used for enumeration

    // Get an IEnumPortableDeviceObjectIDs interface by calling EnumObjects with the
    // specified parent object identifier.
    hr = pContent->EnumObjects(0, wszParentObjectID, NULL, &pEnumObjectIDs);
    if (FAILED(hr))
    {
        // Failed to get IEnumPortableDeviceObjectIDs from IPortableDeviceContent
    }

    // Loop calling Next() while S_OK is being returned.
    while(hr == S_OK)
    {
        DWORD  cFetched = 0;
        LPWSTR szObjectIDArray[NUM_OBJECTS_TO_REQUEST] = {0};
        hr = pEnumObjectIDs->Next(NUM_OBJECTS_TO_REQUEST, // Number of objects to request on each NEXT call
                                  szObjectIDArray,        // Array of LPWSTR array which will be populated on each NEXT call
                                  &cFetched);             // Number of objects written to the LPWSTR array
        if (SUCCEEDED(hr))
        {
            // Traverse the results of the Next() operation and recursively enumerate
            // Remember to free all returned object identifiers using CoTaskMemFree()
            for (DWORD dwIndex = 0; dwIndex < cFetched; dwIndex++)
            {
                RecursiveEnumerate(szObjectIDArray[dwIndex],pContent);

                // Free allocated LPWSTRs after the recursive enumeration call has completed.
                CoTaskMemFree(szObjectIDArray[dwIndex]);
                szObjectIDArray[dwIndex] = NULL;
            }
        }
    }

    // Release the IEnumPortableDeviceObjectIDs when finished
    if (pEnumObjectIDs != NULL)
    {
        pEnumObjectIDs->Release();
        pEnumObjectIDs = NULL;
    }
}

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile portabledeviceapi.h
Bibliothek PortableDeviceGUIDs.lib

Weitere Informationen

Aufzählen von Inhalten

IEnumPortableDeviceObjectIDs-Schnittstelle