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


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

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

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

Синтаксис

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

Параметры

[in] lpsz

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

[in] ucchMax

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

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

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

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

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

Замечания

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

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

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

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

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

Заметка

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows XP [только классические приложения]
минимальный поддерживаемый сервер Windows Server 2003 [только классические приложения]
целевая платформа Виндоус
заголовка winbase.h (включая Windows.h)
библиотеки Kernel32.lib
DLL Kernel32.dll

См. также

IsBadCodePtr

IsBadReadPtr

IsBadWritePtr