Поделиться через


функция 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 .

Возвращаемое значение

None

Remarks

Функция 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)

См. также раздел

ExAllocatePoolWithTag

IoAllocateMdl

MmBuildMdlForNonPagedPool

WDF_MEMORY_DESCRIPTOR

WDF_MEMORY_DESCRIPTOR_INIT_BUFFER

WDF_MEMORY_DESCRIPTOR_INIT_HANDLE