Функция WdfCollectionAdd (wdfcollection.h)
[Применимо к KMDF и UMDF]
Метод WdfCollectionAdd добавляет указанный объект платформы в коллекцию объектов .
Синтаксис
NTSTATUS WdfCollectionAdd(
[in] WDFCOLLECTION Collection,
[in] WDFOBJECT Object
);
Параметры
[in] Collection
Дескриптор объекта коллекции.
[in] Object
Дескриптор объекта платформы, который будет добавлен в коллекцию.
Возвращаемое значение
WdfCollectionAdd возвращает STATUS_SUCCESS, если операция выполнена успешно. В противном случае этот метод может возвращать одно из следующих значений:
Код возврата | Описание |
---|---|
|
Не удалось добавить указанный объект в указанную коллекцию. |
Этот метод также может возвращать другие значения NTSTATUS.
Ошибка проверка возникает, если драйвер предоставляет недопустимый дескриптор объекта.
Комментарии
Метод WdfCollectionAdd добавляет указанный объект в конец набора объектов, содержащихся в коллекции. Когда WdfCollectionAdd добавляет объект в коллекцию, он увеличивает число ссылок на объект. Драйвер может вызвать WdfCollectionRemove или WdfCollectionRemoveItem для удаления объекта и уменьшения его количества ссылок.
Дополнительные сведения о коллекциях объектов см. в разделе Коллекции объектов платформы.
Примеры
В следующем примере кода создается объект коллекции, а затем добавляется набор объектов запроса, созданных драйвером, в коллекцию.
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;
}
}
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Минимальная версия KMDF | 1,0 |
Минимальная версия UMDF | 2,0 |
Верхняя часть | wdfcollection.h (включая Wdf.h) |
Библиотека | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <= DISPATCH_LEVEL |
Правила соответствия DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |