Функция WdfLookasideListCreate (wdfmemory.h)
[Относится только к KMDF]
Метод WdfLookasideListCreate создает объект lookaside-list, из которого драйвер может получить объекты памяти.
Синтаксис
NTSTATUS WdfLookasideListCreate(
[in, optional] PWDF_OBJECT_ATTRIBUTES LookasideAttributes,
[in] size_t BufferSize,
[in] POOL_TYPE PoolType,
[in, optional] PWDF_OBJECT_ATTRIBUTES MemoryAttributes,
[in, optional] ULONG PoolTag,
[out] WDFLOOKASIDE *Lookaside
);
Параметры
[in, optional] LookasideAttributes
Указатель на структуру WDF_OBJECT_ATTRIBUTES , которая содержит атрибуты объекта для нового объекта lookaside-list. Этот параметр является необязательным и может быть WDF_NO_OBJECT_ATTRIBUTES.
[in] BufferSize
Ненулевой размер (в байтах) буфера, который платформа будет выделять для каждого объекта памяти.
[in] PoolType
POOL_TYPE типизированное значение, указывающее тип выделенной памяти.
[in, optional] MemoryAttributes
Указатель на структуру WDF_OBJECT_ATTRIBUTES , содержащую атрибуты объекта для каждого объекта памяти, который драйвер получает из списка lookaside. Этот параметр является необязательным и может быть WDF_NO_OBJECT_ATTRIBUTES.
[in, optional] PoolTag
Определенный драйвером тег пула для буфера каждого объекта памяти. Отладчики отображают этот тег. Драйверы обычно указывают строку символов длиной до четырех символов, разделенную одними кавычками, в обратном порядке (например, dcba). Значение ASCII каждого символа в теге должно находиться в диапазоне от 0 до 127. Отладка драйвера упрощается, если каждый тег пула уникален.
Если значение PoolTag равно нулю, платформа предоставляет тег пула по умолчанию, который использует первые четыре символа имени службы драйвера в режиме ядра. Если имя службы начинается с "WDF" (имя не учитывает регистр и не содержит кавычки), используются следующие четыре символа. Если доступно менее четырех символов, используется FxDr.
Для KMDF версии 1.5 и более поздних драйвер может использовать элемент DriverPoolTag структуры WDF_DRIVER_CONFIG , чтобы указать тег пула по умолчанию.
[out] Lookaside
Указатель на расположение, которое получает дескриптор нового объекта lookaside-list.
Возвращаемое значение
WdfLookasideListCreate возвращает STATUS_SUCCESS, если операция выполнена успешно. В противном случае этот метод может возвращать одно из следующих значений:
Код возврата | Описание |
---|---|
|
Обнаружен недопустимый параметр. |
|
Недостаточно памяти. |
Список других возвращаемых значений, которые может возвращать метод WdfLookasideListCreate , см. в разделе Ошибки создания объектов платформы.
Этот метод также может возвращать другие значения NTSTATUS.
Комментарии
После вызова WdfLookasideListCreate для создания объекта lookaside-list драйвер может вызвать WdfMemoryCreateFromLookaside , чтобы получить буфер из списка lookaside.
По умолчанию родительским объектом нового lookaside-list является объект драйвера платформы, создаваемый методом WdfDriverCreate . Для указания другого родительского элемента можно использовать элемент ParentObjectструктуры WDF_OBJECT_ATTRIBUTES . Платформа удаляет объект lookaside-list при удалении родительского объекта. Если драйвер не изменяет родительский объект по умолчанию, драйвер должен удалить объект lookaside-list после завершения работы с объектом . В противном случае объект lookaside-list будет оставаться до тех пор, пока диспетчер ввода-вывода не выгрузит драйвер.
Если драйвер предоставляет WDF_OBJECT_ATTRIBUTES структуру для параметров LookasideAttributes и MemoryAttributes и если обе структуры указывают объект устройства в качестве родительского объекта, дескрипторы объекта устройства должны быть одинаковыми.
Дополнительные сведения об объектах памяти платформы и списках lookaside см. в разделе Использование буферов памяти.
Если драйвер указывает PagedPool для параметра PoolType , метод WdfLookasideListCreate должен вызываться по адресу IRQL <= APC_LEVEL. В противном случае метод можно вызвать в IRQL <= DISPATCH_LEVEL.
Примеры
Пример кода, в котором используется WdfLookasideListCreate, см. в разделе WdfMemoryCreateFromLookaside.
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Минимальная версия KMDF | 1,0 |
Верхняя часть | wdfmemory.h (включая Wdf.h) |
Библиотека | Wdf01000.sys (см. раздел Управление версиями библиотеки Платформы). |
IRQL | См. раздел "Примечания". |
Правила соответствия DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |