[适用于 KMDF 和 UMDF]
WdfMemoryGetBuffer 方法返回指向与指定内存对象关联的缓冲区的指针。
语法
PVOID WdfMemoryGetBuffer(
[in] WDFMEMORY Memory,
[out, optional] size_t *BufferSize
);
参数
[in] Memory
框架内存对象的句柄。
[out, optional] BufferSize
指向接收内存缓冲区大小(以字节为单位)的位置的指针。 此参数是可选的,可以 NULL。
返回值
WdfMemoryGetBuffer 返回指向内存缓冲区的指针。
如果驱动程序提供无效的对象句柄,则会发生 bug 检查。
注解
有关框架内存对象的详细信息,请参阅 使用内存缓冲区。
可在任何 IRQL 中调用 WdfMemoryGetBuffer。
例子
以下代码示例基于 kmdf_fx2 示例驱动程序中的 EvtUsbTargetPipeReadComplete 回调函数。 该示例获取与回调函数接收的内存对象关联的缓冲区。 该示例将数据从缓冲区复制到驱动程序定义的设备对象上下文空间中。
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) |