Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
[Применимо только к KMDF]
Метод WdfIoResourceListAppendDescriptor добавляет дескриптор ресурса в конец логической конфигурации списка требований к ресурсам.
Синтаксис
NTSTATUS WdfIoResourceListAppendDescriptor(
[in] WDFIORESLIST ResourceList,
[in] PIO_RESOURCE_DESCRIPTOR Descriptor
);
Параметры
[in] ResourceList
Дескриптор объекта списка ресурсов платформы, представляющий логическую конфигурацию аппаратных ресурсов для устройства.
[in] Descriptor
Указатель на структуру IO_RESOURCE_DESCRIPTOR, описывающую аппаратный ресурс.
Возвращаемое значение
WdfIoResourceListAppendDescriptor возвращает STATUS_SUCCESS, если операция выполнена успешно. В противном случае этот метод может вернуть одно из следующих значений:
Возвращаемый код | Описание |
---|---|
|
Указан недопустимый параметр. |
|
Драйверу не разрешено добавлять дескрипторы в логическую конфигурацию, указанную параметром resourceList. |
|
Платформа не могла выделить место для хранения дескриптора. |
Проверка системной ошибки возникает, если драйвер предоставляет недопустимый дескриптор объекта.
Замечания
Платформа копирует содержимое структуры 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) |