Функция 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 для удаления объекта и уменьшения его количества ссылок.
Дополнительные сведения о коллекциях объектов см. в коллекциях объектов Framework.
Примеры
В следующем примере кода создается объект коллекции, а затем добавляется набор объектов запросов, созданных драйвером, в коллекцию.
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 (include Wdf.h) |
библиотеки | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <= DISPATCH_LEVEL |
правил соответствия DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |