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.Mdlu.MdlType.BufferLength 成員分別設定為 MdlBufferLength 參數所指定的值。

範例

下列程式代碼範例會配置緩衝區、建立緩衝區的 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)

另請參閱

ExAllocatePoolWithTag

IoAllocateMdl

MmBuildMdlForNonPagedPool

WDF_MEMORY_DESCRIPTOR

WDF_MEMORY_DESCRIPTOR_INIT_BUFFER

WDF_MEMORY_DESCRIPTOR_INIT_HANDLE