De ReadProcessMemory in MSDN:¿Por qué ReadProcessMemory tiene `lpNumberOfBytesRead`?
lpBaseAddress [en]:
Un puntero a la dirección de base en el proceso especificado desde la que leer. Antes de que se produzca cualquier transferencia de datos, el sistema verifica que todos los datos en la dirección base y la memoria del tamaño especificado sean accesibles para el acceso de lectura, y si no es accesible, la función falla.
nTamaño [en]:
El número de bytes que se lee desde el proceso especificado.
lpNumberOfBytesRead [out]
Un puntero a una variable que recibe el número de bytes transferidos en el tampón especificado. Si lpNumberOfBytesRead es NULL, el parámetro se ignora.
Así que .. ReadProcessMemory
solo puede tener éxito completo o puede fallar por completo. Y el tamaño obviamente es conocido por la persona que llama, tuvo que pasarlo para hacer la llamada. ¿Por qué tener el lpNumberOfBytesRead
?
Esa es una buena pregunta. – paxdiablo
@paxdiablo: Gracias :) –
Magia oscura pasando aquí. Hay un error específico ERROR_PARTIAL_COPY que dice "Solo se completó una parte de una solicitud ReadProcessMemory o WriteProcessMemory". Esto parece ir en contra de "tener éxito o fracasar por completo", pero no tengo idea de cuál es la correcta. – paxdiablo