WDF_MEMORY_DESCRIPTOR_INIT_MDL, fonction (wdfmemory.h)
[S’applique à KMDF et UMDF]
La fonction WDF_MEMORY_DESCRIPTOR_INIT_MDL initialise une structure WDF_MEMORY_DESCRIPTOR afin qu’elle décrive une liste de descripteurs mémoire (MDL) spécifiée.
Syntaxe
void WDF_MEMORY_DESCRIPTOR_INIT_MDL(
[out] PWDF_MEMORY_DESCRIPTOR Descriptor,
[in] PMDL Mdl,
[in] ULONG BufferLength
);
Paramètres
[out] Descriptor
Pointeur vers une structure WDF_MEMORY_DESCRIPTOR .
[in] Mdl
Pointeur vers une MDL qui décrit une mémoire tampon.
[in] BufferLength
Taille, en octets, de la mémoire tampon spécifiée par Mdl .
Valeur de retour
None
Remarques
La fonction WDF_MEMORY_DESCRIPTOR_INIT_MDL met à zéro la structure WDF_MEMORY_DESCRIPTOR spécifiée et définit le membre Type de la structure sur WdfMemoryDescriptorTypeMdl. Ensuite, il définit les membres u.MdlType.Mdl et u.MdlType.BufferLength de la structure sur les valeurs que les paramètres Mdl et BufferLength spécifient, respectivement.
Exemples
L’exemple de code suivant alloue une mémoire tampon, crée une MDL pour la mémoire tampon et utilise la MDL pour initialiser une structure 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
);
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
Version KMDF minimale | 1.0 |
Version UMDF minimale | 2.0 |
En-tête | wdfmemory.h (include Wdf.h) |
Règles de conformité DDI | MdlAfterReqCompletedIntIoctlA(kmdf), MdlAfterReqCompletedIoctlA(kmdf), MdlAfterReqCompletedReadA(kmdf), MdlAfterReqCompletedWriteA(kmdf) |