Функции проверки доступа

Win32 API предоставляет набор функций, позволяющий процессу определить, имеет ли он указанные права доступа по указанному адресу или диапазону адресов. Доступны следующие функции проверки доступа:

Функция Описание

IsBadCodePtr

Определяет, имеет ли процесс права чтения памяти по указанному адресу

IsBadReadPtr

Определет, имеет ли процесс права чтения памяти по указанному диапазону адресов.

IsBadStringPtr

Определяет, может ли процесс использовать переданный указатель как указатель на ANSI-строку (заканчивающуюся символом с кодом 0). Функция проверяет, имеет ли процесс доступ к фрагменту памяти, который начинается от заданного указателя, и длина которого определяется первым вхождением символа с кодом 0, но не больше заданного количества символов.

IsBadWritePtr

Определет, имеет ли процесс права записи в память по указанному диапазону адресов.

Функции IsBadHugeReadPtr и IsBadHugeWritePtr оставлены для совместимости с 16-битной версией Windows, которая делает различия между нормальным выделением памяти, и выделением фрагментов памяти, которые занимают несколько сегментов. В 32-битной версии Windows эти функции эквивалентны соответственно функциям IsBadReadPtr и IsBadWritePtr.

В случае многопоточности возможна ситуация, когда один из потоков изменяет права доступа к фрагменту памяти после того, как другой поток этот фрагмент уже протестировал. Даже если функции проверки доступа показывают вам, что вы имеете желаемый доступ к памяти, вы все равно должны помещать обращения к такой памяти в try..finally блок. Использование блоков структурной обработки исключительных ситуаций позволяют системе уведомить процесс о том, что случилось нарушение доступа (access violation), и предоставлят процессу удобные средства для обработки исключения. Для более детальной информации смотрите раздел "Структурная обработка исключений".

НазадОписание прочих возможностей Сравнение методов выделения памятиВперед

© Mystic, 2002