WdfCollectionAdd-Funktion (wdfcollection.h)
[Gilt für KMDF und UMDF]
Die WdfCollectionAdd-Methode fügt einer Objektauflistung ein angegebenes Frameworkobjekt hinzu.
Syntax
NTSTATUS WdfCollectionAdd(
[in] WDFCOLLECTION Collection,
[in] WDFOBJECT Object
);
Parameter
[in] Collection
Ein Handle für ein Auflistungsobjekt.
[in] Object
Ein Handle für das Frameworkobjekt, das der Auflistung hinzugefügt wird.
Rückgabewert
WdfCollectionAdd gibt STATUS_SUCCESS zurück, wenn der Vorgang erfolgreich ist. Andernfalls gibt diese Methode möglicherweise einen der folgenden Werte zurück:
Rückgabecode | Beschreibung |
---|---|
|
Das angegebene Objekt konnte der angegebenen Auflistung nicht hinzugefügt werden. |
Diese Methode kann auch andere NTSTATUS-Werte zurückgeben.
Eine Fehlerüberprüfung tritt auf, wenn der Treiber ein ungültiges Objekthandle bereitstellt.
Hinweise
Die WdfCollectionAdd-Methode fügt das angegebene Objekt an das Ende der Gruppe von Objekten an, die die Auflistung enthält. Wenn WdfCollectionAdd einer Auflistung ein Objekt hinzufügt, wird die Verweisanzahl des Objekts erhöht. Ihr Treiber kann WdfCollectionRemove oder WdfCollectionRemoveItem aufrufen, um das Objekt zu entfernen und seine Verweisanzahl zu verringern.
Weitere Informationen zu Objektsammlungen finden Sie unter Framework-Objektsammlungen.
Beispiele
Im folgenden Codebeispiel wird ein Auflistungsobjekt erstellt und dann eine Reihe von vom Treiber erstellten Anforderungsobjekten zur Auflistung hinzugefügt.
WDF_OBJECT_ATTRIBUTES attributes;
NTSTATUS status;
WDFCOLLECTION hCollection = NULL;
WDFREQUEST subRequest = NULL;
WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
attributes.ParentObject = Request;
status = WdfCollectionCreate(
&attributes,
&hCollection
);
if (!NT_SUCCESS(status)) {
goto Exit;
}
for (i = 0; i < numSubRequests; i++) {
WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
WDF_OBJECT_ATTRIBUTES_SET_CONTEXT_TYPE(
&attributes,
SUB_REQUEST_CONTEXT
);
status = WdfRequestCreate(
&attributes,
WdfUsbTargetDeviceGetIoTarget(deviceContext->WdfUsbTargetDevice),
&subRequest
);
if (!NT_SUCCESS(status)) {
goto Exit;
}
status = WdfCollectionAdd(
hCollection,
subRequest
);
if (!NT_SUCCESS(status)) {
WdfObjectDelete(subRequest);
goto Exit;
}
}
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Universell |
KMDF-Mindestversion | 1.0 |
UMDF-Mindestversion | 2.0 |
Kopfzeile | wdfcollection.h (einschließen von Wdf.h) |
Bibliothek | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <= DISPATCH_LEVEL |
DDI-Complianceregeln | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |