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


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

Код возврата Описание
STATUS_INVALID_PARAMETER
Обнаружен недопустимый параметр.
STATUS_INSUFFICIENT_RESOURCES
Недостаточно памяти.
 

Список других возвращаемых значений, которые может возвращать метод 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)

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

WDF_OBJECT_ATTRIBUTES

WdfDriverCreate

WdfMemoryCreateFromLookaside