Функция WdfMemoryGetBuffer (wdfmemory.h)
[Применимо к KMDF и UMDF]
Метод WdfMemoryGetBuffer возвращает указатель на буфер, связанный с указанным объектом памяти.
Синтаксис
PVOID WdfMemoryGetBuffer(
[in] WDFMEMORY Memory,
[out, optional] size_t *BufferSize
);
Параметры
[in] Memory
Дескриптор объекта памяти платформы.
[out, optional] BufferSize
Указатель на расположение, которое получает размер буфера памяти в байтах. Этот параметр является необязательным и может иметь значение NULL.
Возвращаемое значение
WdfMemoryGetBuffer возвращает указатель на буфер памяти.
Ошибка проверка возникает, если драйвер предоставляет недопустимый дескриптор объекта.
Комментарии
Дополнительные сведения об объектах памяти платформы см. в разделе Использование буферов памяти.
WdfMemoryGetBuffer можно вызвать в любом IRQL.
Примеры
Следующий пример кода основан на функции обратного вызова EvtUsbTargetPipeReadComplete в примере драйвера kmdf_fx2 . В примере получается буфер, связанный с объектом памяти, который получает функция обратного вызова. В этом примере данные копируются из буфера в пространство контекста объекта устройства, определенное драйвером.
VOID
OsrFxEvtUsbInterruptPipeReadComplete(
WDFUSBPIPE Pipe,
WDFMEMORY Buffer,
size_t NumBytesTransferred,
WDFCONTEXT Context
)
{
PUCHAR switchState = NULL;
WDFDEVICE device;
PDEVICE_CONTEXT pDeviceContext = Context;
device = WdfObjectContextGetObject(pDeviceContext);
switchState = WdfMemoryGetBuffer(Buffer, NULL);
pDeviceContext->CurrentSwitchState = *switchState;
}
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Минимальная версия KMDF | 1,0 |
Минимальная версия UMDF | 2,0 |
Верхняя часть | wdfmemory.h (включая Wdf.h) |
Библиотека | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | Любой уровень |
Правила соответствия DDI | DriverCreate(kmdf), MemAfterReqCompletedIntIoctlA(kmdf), MemAfterReqCompletedIoctlA(kmdf), MemAfterReqCompletedReadA(kmdf), MemAfterReqCompletedWriteA(kmdf) |