Функция IsBadReadPtr (winbase.h)
Проверяет, имеет ли вызывающий процесс доступ на чтение к указанному диапазону памяти.
Синтаксис
BOOL IsBadReadPtr(
[in] const VOID *lp,
[in] UINT_PTR ucb
);
Параметры
[in] lp
Указатель на первый байт блока памяти.
[in] ucb
Размер блока памяти в байтах. Если этот параметр равен нулю, возвращаемое значение равно нулю.
Возвращаемое значение
Если вызывающий процесс имеет доступ на чтение ко всем байтам в указанном диапазоне памяти, возвращаемое значение равно нулю.
Если вызывающий процесс не имеет доступа на чтение ко всем байтам в указанном диапазоне памяти, возвращаемое значение не равно нулю.
Если приложение скомпилировано как версия отладки и процесс не имеет доступа на чтение ко всем байтам в указанном диапазоне памяти, функция вызывает утверждение и прерывает работу отладчика. При выходе из отладчика функция продолжает работу как обычно и возвращает ненулевое значение. Это поведение предназначено для отладки.
Комментарии
Эта функция обычно используется при работе с указателями, возвращаемыми из сторонних библиотек, где невозможно определить поведение управления памятью в сторонней библиотеке DLL.
Предполагается, что потоки в процессе будут взаимодействовать таким образом, чтобы один из них не освобождал память, необходимую другому. Использование этой функции не отменяет необходимость в этом. Если этого не сделать, приложение может завершиться непредсказуемым сбоем.
Разыменовывание потенциально недопустимых указателей может отключить расширение стека в других потоках. Поток, исчерпающий свой стек, когда расширение стека отключено, приводит к немедленному завершению родительского процесса без всплывающего окна ошибок или диагностических сведений.
Если вызывающий процесс имеет доступ на чтение некоторых( но не всех) байтов в указанном диапазоне памяти, возвращаемое значение не равно нулю.
В среде с упреждающей многозадачностью другой поток может изменить доступ процесса к тестируемой памяти. Даже если функция указывает, что процесс имеет доступ на чтение к указанной памяти, следует использовать структурированную обработку исключений при попытке доступа к памяти. Использование структурированной обработки исключений позволяет системе уведомлять процесс при возникновении исключения нарушения доступа, предоставляя процессу возможность обработки исключения.
Требования
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | winbase.h (включая Windows.h) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |