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