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


Функция WdfMemoryCreateFromLookaside (wdfmemory.h)

[Применимо только к KMDF]

Метод WdfMemoryCreateFromLookaside создает объект памяти платформы и получает буфер памяти из указанного списка lookaside.

Синтаксис

NTSTATUS WdfMemoryCreateFromLookaside(
  [in]  WDFLOOKASIDE Lookaside,
  [out] WDFMEMORY    *Memory
);

Параметры

[in] Lookaside

Дескриптор объекта lookaside-list платформы, полученный путем вызова WdfLookasideListCreate.

[out] Memory

Указатель на расположение, которое получает дескриптор к новому объекту памяти платформы.

Возвращаемое значение

WdfMemoryCreateFromLookaside возвращает STATUS_SUCCESS, если операция выполнена успешно. В противном случае этот метод возвращает одно из следующих значений:

Код возврата Описание
СТАТУС_НЕДЕЙСТВИТЕЛЬНЫЙ_ПАРАМЕТР
Обнаружен недопустимый параметр.
СТАТУС_НЕДОСТАТОЧНЫЕ_РЕСУРСЫ
Недостаточно памяти.
 

Этот метод также может возвращать другие значения NTSTATUS.

Ошибка возникает, если драйвер предоставляет недопустимый дескриптор объекта.

Замечания

После вызова драйвера WdfLookasideListCreate для создания объекта lookaside-list драйвер может вызвать WdfMemoryCreateFromLookaside, чтобы получить буфер из списка lookaside.

Платформа предоставляет дескриптор объекту памяти, представляющего буфер. Когда платформа создает объект памяти, он использует атрибуты объектов, предоставляемые драйвером при вызове WdfMemoryCreateFromLookaside.

Когда драйвер завершит использование объекта памяти, полученного из списка lookaside, драйвер должен вызвать WdfObjectDelete, чтобы вернуть объект памяти в список lookaside.

Дополнительные сведения об объектах памяти платформы и списках lookaside см. в разделе Использование буферов памяти.

Если буферы lookaside-list выделяются из пула памяти, метод WdfMemoryCreateFromLookaside должен вызываться в IRQL <= APC_LEVEL. В противном случае метод можно вызвать в IRQL <= DISPATCH_LEVEL.

Примеры

В следующем примере кода создается список lookaside и сохраняется дескриптор списка в пространстве контекста объекта устройства, определяемого драйвером. Затем драйвер получает буфер из списка lookaside.

PDRIVER_CONTEXT  driverContext;
WDFMEMORY  memHandle;

driverContext = GetDriverContext(driver);

status = WdfLookasideListCreate(
                                WDF_NO_OBJECT_ATTRIBUTES,
                                sizeof(MY_LOOKASIDE_BUFFER),
                                NonPagedPool,
                                WDF_NO_OBJECT_ATTRIBUTES,
                                MY_POOL_TAG,
                                &driverContext->LookasideListHandle
                                );
...
status = WdfMemoryCreateFromLookaside(
                                      driverContext->LookasideListHandle,
                                      &memHandle
                                      );

Требования

Требование Ценность
целевая платформа универсальный
минимальная версия KMDF 1.0
Заголовок wdfmemory.h (include Wdf.h)
Библиотека Wdf01000.sys (см. управление версиями библиотеки Платформы).)
IRQL См. раздел "Примечания".
правил соответствия DDI DriverCreate(kmdf)

См. также

WdfLookasideListCreate

WdfMemoryCreate

WdfMemoryCreatePreallocated

WdfObjectDelete