Поделиться через


Функция WdfIoResourceRequirementsListInsertIoResList (wdfresource.h)

[Применимо только к KMDF]

Метод WdfIoRequirementsListInsertIoResList вставляет логическую конфигурацию в список требований к ресурсам.

Синтаксис

NTSTATUS WdfIoResourceRequirementsListInsertIoResList(
  [in] WDFIORESREQLIST RequirementsList,
  [in] WDFIORESLIST    IoResList,
  [in] ULONG           Index
);

Параметры

[in] RequirementsList

Дескриптор объекта списка требований к ресурсам платформы, который представляет список требований к ресурсам устройства.

[in] IoResList

Дескриптор объекта списка ресурсов платформы, представляющий логическую конфигурацию аппаратных ресурсов для устройства.

[in] Index

Отсчитываемое от нуля значение, используемое в качестве индекса в набор логических конфигураций, которые уже находятся в списке требований к ресурсам, который RequirementsList указывает. Чтобы добавить конфигурацию в конец списка, укажите WDF_INSERT_AT_END или возвращаемое значение из WdfIoResourceRequirementsListGetCount.

Возвращаемое значение

WdfIoResourceRequirementsListInsertIoResList возвращает STATUS_SUCCESS, если операция выполнена успешно. В противном случае этот метод может вернуть одно из следующих значений:

Возвращаемый код Описание
STATUS_INVALID_PARAMETER
Недопустимый параметр, указанный.
STATUS_INVALID_DEVICE_REQUEST
Указанный объект resource-requirements-list не принадлежит указанному объекту resource-range-list.
STATUS_INSUFFICIENT_RESOURCES
Платформа не могла выделить пространство для хранения объекта списка ресурсов.
STATUS_ARRAY_BOUNDS_EXCEEDED
Указанное значение параметра Index было слишком большим.
 

Проверка системной ошибки возникает, если драйвер предоставляет недопустимый дескриптор объекта.

Замечания

Метод WdfIoRequirementsListInsertIoResList вставляет логическую конфигурацию, которую параметр IoResList указывает в список требований к ресурсам, указанный параметром RequirementsList перед логической конфигурацией, которая определяет значение Index.

Чтобы добавить логическую конфигурацию в конец списка требований к ресурсам, используйте WDF_INSERT_AT_END или возвращаемое значение из WdfIoResourceRequirementsListGetCount в качестве значения индекса. Кроме того, используйте метод WdfIoRequirementsListAppendIoResList.

Дополнительные сведения о списках требований к ресурсам см. в разделе Аппаратные ресурсы для Framework-Based драйверов.

Примеры

В следующем примере кода показано, как функция обратного вызова EvtDeviceRequirementsQuery может создать две пустые логические конфигурации и добавить их в список требований к ресурсам.

NTSTATUS
Example_EvtDeviceResourceRequirementsQuery(
    IN WDFDEVICE Device,
    IN WDFIORESREQLIST RequirementsList
    )
{
    NTSTATUS  status;
    WDFIORESLIST  logConfig1;
    WDFIORESLIST  logConfig2;

    status = WdfIoResourceListCreate(
                                     RequirementsList,
                                     WDF_NO_OBJECT_ATTRIBUTES,
                                     &logConfig1
                                     );
    if (!NT_SUCCESS(status)) {
        return status;
    }

    status = WdfIoResourceRequirementsListAppendIoResList(
                                             RequirementsList,
                                             logConfig1
                                             );
    if (!NT_SUCCESS(status)) {
        return status;
    }

    status = WdfIoResourceListCreate(
                                     RequirementsList,
                                     WDF_NO_OBJECT_ATTRIBUTES,
                                     &logConfig2
                                     );
    if (!NT_SUCCESS(status)) {
        return status;
    }
    status = WdfIoResourceRequirementsListInsertIoResList(
                                             RequirementsList,
                                             logConfig2,
                                             WDF_INSERT_AT_END
                                             );
    if (!NT_SUCCESS(status)) {
        return status;
    }
...
}

Требования

Требование Ценность
целевая платформа Всеобщий
минимальная версия KMDF 1.0
заголовка wdfresource.h (включая Wdf.h)
библиотеки Wdf01000.sys (см. управление версиями библиотеки Платформы).)
IRQL <=DISPATCH_LEVEL
правил соответствия DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

См. также

WdfIoResourceListCreate

WdfIoResourceRequirementsListAppendIoResList