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


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

См. также

WDF_OBJECT_ATTRIBUTES

WdfDriverCreate

WdfMemoryCreateFromLookaside