Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La macro MmGetMdlVirtualAddress retourne l’adresse virtuelle de base d’une mémoire tampon décrite par un MDL.
Syntaxe
#define MmGetMdlVirtualAddress(Mdl) \
((PVOID) ((PCHAR) ((Mdl)->StartVa) + (Mdl)->ByteOffset))
Paramètres
[in] Mdl
Pointeur vers un MDL qui décrit la mémoire tampon pour laquelle retourner l’adresse virtuelle initiale.
Valeur de retour
MmGetMdlVirtualAddress retourne l’adresse virtuelle de base de la mémoire tampon décrite par le MDL.
Remarques
MmGetMdlVirtualAddress retourne l’adresse virtuelle de départ du MDL.
MmGetMdlVirtualAddress retourne une adresse virtuelle qui n’est pas nécessairement valide dans le contexte de thread actuel. Les pilotes de niveau inférieur ne doivent pas tenter d’utiliser l’adresse virtuelle retournée pour accéder à la mémoire, en particulier l’espace mémoire utilisateur.
L’adresse retournée, utilisée en tant qu’index pour une entrée d’adresse physique dans le MDL, peut être entrée dans MapTransfer.
Les appelants de MmGetMdlVirtualAddress peuvent s’exécuter à n’importe quel runtime IRQL. En règle générale, l’appelant s’exécute à IRQL = DISPATCH_LEVEL, car cette routine est couramment appelée pour obtenir le paramètre CurrentVa pour MapTransfer.
Exigences
| Exigence | Valeur |
|---|---|
| client minimum pris en charge | Windows 2000 |
| d’en-tête | wdm.h |
| IRQL | N’importe quel niveau (voir Remarques) |
| règles de conformité DDI | mdlAfterReqCompletedIntIoctlA(kmdf), MdlAfterReqCompletedIoctlA(kmdf), MdlAfterReqCompletedReadA(kmdf), MdlAfterReqCompletedWriteA(kmdf) |