WDF_MEMORY_DESCRIPTOR_INIT_MDL 函数 (wdfmemory.h)
[适用于 KMDF 和 UMDF]
WDF_MEMORY_DESCRIPTOR_INIT_MDL 函数初始化 WDF_MEMORY_DESCRIPTOR 结构,以便它描述 (MDL) 指定的内存描述符列表。
语法
void WDF_MEMORY_DESCRIPTOR_INIT_MDL(
[out] PWDF_MEMORY_DESCRIPTOR Descriptor,
[in] PMDL Mdl,
[in] ULONG BufferLength
);
参数
[out] Descriptor
指向 WDF_MEMORY_DESCRIPTOR 结构的指针。
[in] Mdl
指向描述缓冲区的 MDL 的指针。
[in] BufferLength
Mdl 指定的缓冲区的大小(以字节为单位)。
返回值
无
备注
WDF_MEMORY_DESCRIPTOR_INIT_MDL函数将指定的WDF_MEMORY_DESCRIPTOR结构归零,并将结构的 Type 成员设置为 WdfMemoryDescriptorTypeMdl。 然后,它将结构的 u.MdlType.Mdl 和 u.MdlType.BufferLength 成员分别设置为 Mdl 和 BufferLength 参数指定的值。
示例
下面的代码示例分配缓冲区,为缓冲区创建 MDL,并使用 MDL 初始化 WDF_MEMORY_DESCRIPTOR 结构。
PVOID pBuffer = NULL;
PMDL pMdl = NULL;
pBuffer = ExAllocatePoolWithTag(
NonPagedPool,
BUFFER_LENGTH,
IOTARGET_DRIVER_TAG
);
if (pBuffer == NULL){
Status = STATUS_UNSUCCESSFUL;
goto Cleanup;
}
pMdl = IoAllocateMdl(
pBuffer,
BUFFER_LENGTH,
FALSE,
TRUE,
NULL
);
if (pMdl == NULL){
Status = STATUS_UNSUCCESSFUL;
goto Cleanup;
}
MmBuildMdlForNonPagedPool(pMdl);
WDF_MEMORY_DESCRIPTOR_INIT_MDL(
pInputBuffer,
pMdl,
BUFFER_LENGTH
);
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
最低 KMDF 版本 | 1.0 |
最低 UMDF 版本 | 2.0 |
标头 | wdfmemory.h (包括 Wdf.h) |
DDI 符合性规则 | MdlAfterReqCompletedIntIoctlA (kmdf) ,MdlAfterReqCompletedIoctlA (kmdf ) ,MdlAfterReqCompletedReadA (kmdf ) ,MdlAfterReqCompletedWriteA (kmdf) |