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
);
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
最小 KMDF 版本 | 1.0 |
最低UMDF版本 | 2.0 |
標頭 | wdfmemory.h (包含 Wdf.h) |
DDI 合規性規則 | MdlAfterReqCompletedIntIoctlA (kmdf) 、 MdlAfterReqCompletedIoctlA (kmdf) 、 MdlAfterReqCompletedReadA (kmdf) 、 MdlAfterReqCompletedWriteA (kmdf) |