função WDF_MEMORY_DESCRIPTOR_INIT_MDL (wdfmemory.h)
[Aplica-se a KMDF e UMDF]
A função WDF_MEMORY_DESCRIPTOR_INIT_MDL inicializa uma estrutura de WDF_MEMORY_DESCRIPTOR para que ela descreva uma MDL (lista de descritores de memória) especificada.
Sintaxe
void WDF_MEMORY_DESCRIPTOR_INIT_MDL(
[out] PWDF_MEMORY_DESCRIPTOR Descriptor,
[in] PMDL Mdl,
[in] ULONG BufferLength
);
Parâmetros
[out] Descriptor
Um ponteiro para uma estrutura WDF_MEMORY_DESCRIPTOR.
[in] Mdl
Um ponteiro para um MDL que descreve um buffer.
[in] BufferLength
O tamanho, em bytes, do buffer que especifica Mdl.
Valor de retorno
Nenhum
Observações
A função WDF_MEMORY_DESCRIPTOR_INIT_MDL zera a estrutura de WDF_MEMORY_DESCRIPTOR especificada e define o membro tipo da estrutura como WdfMemoryDescriptorTypeMdl. Em seguida, ele define os membros u.MdlType.Mdl e membros u.MdlType.BufferLength para os valores que os parâmetros Mdl e BufferLength especificam, respectivamente.
Exemplos
O exemplo de código a seguir aloca um buffer, cria um MDL para o buffer e usa o MDL para inicializar uma estrutura 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 | Valor |
---|---|
da Plataforma de Destino | Universal |
versão mínima do KMDF | 1.0 |
versão mínima do UMDF | 2.0 |
cabeçalho | wdfmemory.h (inclua Wdf.h) |
regras de conformidade de DDI | MdlAfterReqCompletedIntIoctlA(kmdf), MdlAfterReqCompletedIoctlA(kmdf), MdlAfterReqCompletedReadA(kmdf), MdlAfterReqCompletedWriteA(kmdf) |