función WDF_MEMORY_DESCRIPTOR_INIT_MDL (wdfmemory.h)
[Se aplica a KMDF y UMDF]
La función WDF_MEMORY_DESCRIPTOR_INIT_MDL inicializa una estructura de WDF_MEMORY_DESCRIPTOR para que describa una lista de descriptores de memoria (MDL) especificada.
Sintaxis
void WDF_MEMORY_DESCRIPTOR_INIT_MDL(
[out] PWDF_MEMORY_DESCRIPTOR Descriptor,
[in] PMDL Mdl,
[in] ULONG BufferLength
);
Parámetros
[out] Descriptor
Puntero a una estructura de WDF_MEMORY_DESCRIPTOR .
[in] Mdl
Puntero a un MDL que describe un búfer.
[in] BufferLength
Tamaño, en bytes, del búfer que mdl especifica.
Valor devuelto
None
Observaciones
La función WDF_MEMORY_DESCRIPTOR_INIT_MDL cero la estructura de WDF_MEMORY_DESCRIPTOR especificada y establece el miembro Type de la estructura en WdfMemoryDescriptorTypeMdl. A continuación, establece los miembros u.MdlType.Mdl yu.MdlType.BufferLength de la estructura en los valores que especifican los parámetros Mdl y BufferLength , respectivamente.
Ejemplos
En el ejemplo de código siguiente se asigna un búfer, se crea un MDL para el búfer y se usa mdl para inicializar una estructura de 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
);
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Versión mínima de KMDF | 1.0 |
Versión mínima de UMDF | 2.0 |
Encabezado | wdfmemory.h (incluir Wdf.h) |
Reglas de cumplimiento de DDI | MdlAfterReqCompletedIntIoctlA(kmdf), MdlAfterReqCompletedIoctlA(kmdf), MdlAfterReqCompletedReadA(kmdf), MdlAfterReqCompletedWriteA(kmdf) |