共用方式為


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
                               );

需求

要求 價值
目標平臺 普遍
最低 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