Функция IsBadStringPtrA (winbase.h)

Проверяет, имеет ли вызывающий процесс доступ на чтение к указанному диапазону памяти.

Важно Эта функция устарела и не должна использоваться. Несмотря на его название, он не гарантирует, что указатель является допустимым или что память, указываемая на, является безопасной в использовании. Дополнительные сведения см. в разделе Примечания на этой странице.
 

Синтаксис

BOOL IsBadStringPtrA(
  [in] LPCSTR   lpsz,
  [in] UINT_PTR ucchMax
);

Параметры

[in] lpsz

Указатель на строку, завершаемую null, Юникод или ASCII.

[in] ucchMax

Максимальный размер строки в TCHAR. Функция проверяет доступ на чтение во всех символах вплоть до завершающего пустого символа строки или до количества символов, указанного в этом параметре, в зависимости от того, какое значение меньше. Если этот параметр равен нулю, возвращаемое значение равно нулю.

Возвращаемое значение

Если вызывающий процесс имеет доступ на чтение ко всем символам вплоть до завершающего пустого символа строки или до количества символов, указанного в ucchMax, возвращаемое значение равно нулю.

Если вызывающий процесс не имеет доступа на чтение ко всем символам вплоть до завершающего пустого символа строки или числа символов, указанного в ucchMax, возвращаемое значение не равно нулю.

Если приложение компилируется как версия отладки и процесс не имеет доступа на чтение ко всему указанному диапазону памяти, функция вызывает утверждение и прерывает работу отладчика. При выходе из отладчика функция продолжает работать как обычно и возвращает ненулевое значение. Это поведение является по умолчанию в качестве помощника по отладке.

Комментарии

Эта функция обычно используется при работе с указателями, возвращаемыми из сторонних библиотек, где невозможно определить поведение управления памятью в сторонней библиотеке DLL.

Предполагается, что потоки в процессе будут взаимодействовать таким образом, чтобы один из них не освобождал память, необходимую другому. Использование этой функции не отменяет необходимость в этом. Если этого не сделать, приложение может завершиться непредсказуемым сбоем.

Разыменовывание потенциально недопустимых указателей может отключить расширение стека в других потоках. Поток, исчерпающий свой стек, когда расширение стека отключено, приводит к немедленному завершению родительского процесса без всплывающего окна ошибок или диагностических сведений.

Если вызывающий процесс имеет доступ на чтение к некоторым ( но не ко всем) из указанного диапазона памяти, возвращаемое значение не равно нулю.

В среде с упреждающей многозадачностью другой поток может изменить доступ процесса к тестируемой памяти. Даже если функция указывает, что процесс имеет доступ на чтение к указанной памяти, следует использовать структурированную обработку исключений при попытке доступа к памяти. Использование структурированной обработки исключений позволяет системе уведомлять процесс при возникновении исключения нарушения доступа, предоставляя процессу возможность обработки исключения.

Примечание

Заголовок winbase.h определяет IsBadStringPtr в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header winbase.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

IsBadCodePtr

IsBadReadPtr

IsBadWritePtr