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


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

[Относится только к KMDF]

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

Синтаксис

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

Параметры

[in] Lookaside

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

[out] Memory

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

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

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

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

Этот метод также может возвращать другие значения 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 (включая Wdf.h)
Библиотека Wdf01000.sys (см. раздел Управление версиями библиотеки Платформы).
IRQL См. раздел "Примечания".
Правила соответствия DDI DriverCreate(kmdf)

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

WdfLookasideListCreate

WdfMemoryCreate

WdfMemoryCreatePreallocated

WdfObjectDelete