Функция 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.

Remarks

После вызова драйвера 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 (include Wdf.h)
Библиотека Wdf01000.sys (см. управление версиями библиотеки платформы).)
IRQL См. раздел "Примечания".
Правила соответствия DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

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

WDF_OBJECT_ATTRIBUTES

WdfDriverCreate

WdfMemoryCreateFromLookaside