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

[Относится только к KMDF]

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

Синтаксис

NTSTATUS WdfIoResourceListInsertDescriptor(
  [in] WDFIORESLIST            ResourceList,
  [in] PIO_RESOURCE_DESCRIPTOR Descriptor,
  [in] ULONG                   Index
);

Параметры

[in] ResourceList

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

[in] Descriptor

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

[in] Index

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

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

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

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

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

Комментарии

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

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

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

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

Примеры

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

IO_RESOURCE_DESCRIPTOR descriptor;

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 = WdfIoResourceListInsertDescriptor(
                                           logConfig,
                                           &descriptor,
                                           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)

См. также раздел

IO_RESOURCE_DESCRIPTOR

WdfIoResourceListAppendDescriptor