Compartir a través de


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)

Consulte también

ExAllocatePoolWithTag

IoAllocateMdl

MmBuildMdlForNonPagedPool

WDF_MEMORY_DESCRIPTOR

WDF_MEMORY_DESCRIPTOR_INIT_BUFFER

WDF_MEMORY_DESCRIPTOR_INIT_HANDLE