Функция 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, если операция выполнена успешно. В противном случае этот метод может возвращать одно из следующих значений:
Код возврата | Описание |
---|---|
|
Указан недопустимый параметр. |
|
Драйверу не разрешено добавлять дескрипторы в логическую конфигурацию. |
|
Платформе не удалось выделить место для хранения дескриптора. |
|
Значение, указываемое параметром 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) |