De ReadProcessMemory in MSDN:Pourquoi ReadProcessMemory a-t-il `lpNumberOfBytesRead`?
lpBaseAddress [in]:
Un pointeur sur l'adresse de base dans le processus spécifié à partir de laquelle la lecture. Avant tout transfert de données, le système vérifie que toutes les données dans l'adresse de base et la mémoire de la taille spécifiée sont accessibles pour l'accès en lecture, et si elle n'est pas accessible, la fonction échoue.
nSize [in]:
Le nombre d'octets à lire dans le processus spécifié.
lpNumberOfBytesRead [out]
Un pointeur sur une variable qui reçoit le nombre d'octets transférés dans la mémoire tampon spécifiée. Si lpNumberOfBytesRead est NULL, le paramètre est ignoré.
Donc, ReadProcessMemory
ne peut réussir complètement ou échouer complètement. Et la taille est évidemment connue de l'appelant - a dû le passer pour faire l'appel. Pourquoi avoir le lpNumberOfBytesRead
?
C'est une bonne question. – paxdiablo
@paxdiablo: Merci :) –
La magie noire se passe ici. Il existe une erreur spécifique ERROR_PARTIAL_COPY qui stipule "Seule une partie d'une demande ReadProcessMemory ou WriteProcessMemory a été terminée". Cela semble aller à l'encontre de «réussir ou échouer complètement», mais je n'ai aucune idée de ce qui est juste. – paxdiablo