От ReadProcessMemory in MSDN:Почему у ReadProcessMemory есть `lpNumberOfBytesRead`?
lpBaseAddress [в]:
указатель на базовый адрес в указанном процессе, из которого читать. Прежде чем произойдет какая-либо передача данных, система проверит, что все данные в базовом адресе и памяти указанного размера доступны для доступа к чтению, а если он недоступен, функция выходит из строя.
nРазмер: [в]:
Число байтов, которые должны быть считаны из указанного процесса.
lpNumberOfBytesRead [выход]
Указатель на переменную, которая получает число байтов, переданных в указанный буфер. Если значение lpNumberOfBytesRead равно NULL, параметр игнорируется.
So .. ReadProcessMemory
может полностью преуспеть или полностью провалиться. И размер, очевидно, известен вызывающему, - должен был передать его, чтобы позвонить. Почему есть lpNumberOfBytesRead
?
Это хороший вопрос. – paxdiablo 2010-12-16 03:30:38
@paxdiablo: Спасибо :) – 2010-12-16 03:32:30
Тёмная магия здесь. Существует определенная ошибка ERROR_PARTIAL_COPY, которая гласит: «Выполняется только часть запроса ReadProcessMemory или WriteProcessMemory». Это, кажется, летит перед лицом «полного успеха или неудачи», но я понятия не имею, что правильно. – paxdiablo 2010-12-16 03:49:54