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