Bonjour à tous,
j'ai un petit souci concernant une définition et je trouve peu de doc qui en parle. Dans un premier temps un petit rappel de ce qu'est un mappage mémoire m'aiderais grandement. Je peux juste en dire qu'il s'agit plus ou moins d'uen ralation entre uen adresse et une autre, genre un lien symbolique mais je me perds déjà :p
Après, j'aimerais savoir exactement ce qu'est une MDL (memory descriptor list).
D'après le peu que j'ai pu comprendre, la MDL est une structure définie par le système qui décrit un buffer comme un ensemble d'adresses physiques.
la structure est la suivante:
Pour créer une MDL on appelle:typedef struct _MDL {
struct _MDL *Next;
CSHORT Size;
CSHORT MdlFlags;
struct _EPROCESS *Process;
PVOID MappedSystemVa;
PVOID StartVa;
ULONG ByteCount;
ULONG ByteOffset;
} MDL, *PMDL;
En gros , si je lui passe comme base une adresse A sur une longeur de x octets, il crée une MDL. En gros, il crée une sorte de lien entre adresse virtuelle et adresse physique. Mais comment ça fonctionne? Quels mécanismes sont mis en place pour que quand je fasse @MDL+offset, il s'agit exactement de A+offset (avec offset <= x)?//fonction obsolète mais c sur celle-ci que j'ai pu trouver les meillerus exemples
PMDL MmCreateMdl(
IN PMDL MemoryDescriptorList OPTIONAL,
IN PVOID Base,
IN SIZE_T Length
);
A quel moment le lien entre les deux adresses est effectué?
Je susi un peu paumé et j'arrive pas vraiment à expliquer de relation, donc enn espéran qu'une ame charitable puisse m'éclairer un peu
en vous rerkiant
Partager