| Предыдущий | Следующий |
| STATUS_GUID_SUBSTITUTION_MADE | STATUS_DEVICE_PAPER_EMPTY |
STATUS_PARTIAL_COPY
Защита или доступность исходного либо целевого диапазона изменилась во время копирования
ReadProcessMemory и связанные нативные пути копирования проверяют и копируют диапазон, который может охватывать несколько страниц. Если последующая страница недоступна, освобождена, защищена флагом guard или параллельно исключена из адресного пространства, байты, скопированные до ошибки, могут оставаться действительными, хотя весь запрос завершается результатом частичного копирования.
Всегда используйте возвращённое число байтов и не разбирайте выходную структуру как полную, если обязательные поля не помещаются в это количество. При исследовании работающего процесса приостанавливайте или иным образом синхронизируйте целевой процесс только тогда, когда приложение это допускает: защита и распределение памяти могут закономерно изменяться между отдельными чтениями.
Что следует проверить
- Зафиксируйте запрошенное и фактически скопированное число байтов и определите первую страницу, на которой произошёл сбой.
- Запросите состояние и защиту исходного и целевого регионов на момент ошибки.
- Проектируйте средства чтения с учётом изменяющейся памяти процесса и проверяйте каждую структуру переменной длины.
Ссылки
- Microsoft: ReadProcessMemory
- Microsoft: VirtualQuery
- Исходный код ReactOS: диспетчер виртуальной памяти
- Открытые спецификации Microsoft: значения NTSTATUS
Нужно найти другой код? Найти другой код состояния или ошибки.
