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


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

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

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

Синтаксис

NTSTATUS WdfIoResourceListAppendDescriptor(
  [in] WDFIORESLIST            ResourceList,
  [in] PIO_RESOURCE_DESCRIPTOR Descriptor
);

Параметры

[in] ResourceList

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

[in] Descriptor

Указатель на структуру IO_RESOURCE_DESCRIPTOR, описывающую аппаратный ресурс.

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

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

Возвращаемый код Описание
STATUS_INVALID_PARAMETER
Указан недопустимый параметр.
STATUS_ACCESS_DENIED
Драйверу не разрешено добавлять дескрипторы в логическую конфигурацию, указанную параметром resourceList.
STATUS_INSUFFICIENT_RESOURCES
Платформа не могла выделить место для хранения дескриптора.
 

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

Замечания

Платформа копирует содержимое структуры IO_RESOURCE_DESCRIPTOR, на которую дескриптор указывает на внутреннее хранилище, поэтому подпрограмма драйвера, которая вызывает WdfIoResourceListAppendDescriptor может выделить структуру локально. После вызова драйвера WdfIoResourceListAppendDescriptorдрайвер может повторно использовать структуру IO_RESOURCE_DESCRIPTOR.

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

Примеры

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

IO_RESOURCE_DESCRIPTOR  descriptor;
NTSTATUS  status;
WDFIORESLIST  logConfig;

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

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

RtlZeroMemory(
              &descriptor,
              sizeof(descriptor)
              );

descriptor.Option = 0;
descriptor.Type = CmResourceTypePort;
descriptor.ShareDisposition = CmResourceShareDeviceExclusive;
descriptor.Flags = CM_RESOURCE_PORT_IO|CM_RESOURCE_PORT_16_BIT_DECODE;
descriptor.u.Port.Length = 1;
descriptor.u.Port.Alignment = 0x01;
descriptor.u.Port.MinimumAddress.QuadPart = 0;
descriptor.u.Port.MaximumAddress.QuadPart = 0xFFFF;

status = WdfIoResourceListAppendDescriptor(
                                           logConfig,
                                           &descriptor
                                           );

Требования

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

См. также

IO_RESOURCE_DESCRIPTOR

WdfIoResourceListCreate

WdfIoResourceListInsertDescriptor