Поделиться через


Функция 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

См. также

IsBadCodePtr

IsBadStringPtr

IsBadWritePtr