Параметр /error
Параметр /error определяет типы проверки ошибок, которые созданные заглушки будут выполнять во время выполнения.
Примечание
Эта функция устарела и больше не поддерживается. Рекомендуется использовать параметр /robust .
midl /error { allocation | stub_data | ref | bounds_check | none | all }
Параметры переключения
-
Распределения
-
Проверяет, возвращает ли midl_user_allocate значение NULL , указывающее на ошибку нехватки памяти.
-
stub_data
-
Создает заглушку, которая перехватывает исключения отмены марширования на стороне сервера и передает их обратно клиенту.
-
Ref
-
Создает код, запускающий проверка во время выполнения, чтобы гарантировать отсутствие ссылочных указателей NULL в клиентские заглушки, и вызывает исключение RPC_X_NULL_REF_POINTER при обнаружении.
-
bounds_check
-
Проверяет размер соответствующих и изменяющихся массивов на соответствие спецификации длины передачи.
-
Ни один
-
Не выполняет проверку ошибок.
-
Все
-
Выполняет все проверки ошибок. В случае с MIDL версии 5.0 это параметр компилятора по умолчанию.
Комментарии
Параметр /error выбирает количество проверок ошибок, которые будут выполнять созданные файлы-заглушки. В случае с MIDL версии 5.0 значением по умолчанию является /error all.
Проверяемые ошибки перечисления (по умолчанию во всех версиях MIDL) — это ошибки усечения, вызванные при преобразовании между типами длинных перечислений (32-разрядные целые числа) и короткими типами перечисления (представление перечисления сетевых данных), а также число идентификаторов в перечислении, превышающее 32 767.
Проверка ошибок доступа к памяти (также по умолчанию во всех версиях MIDL) используется для указателей, превышающих конец буфера в коде маршалинга, и для соответствующих массивов, размер которых меньше нуля. Используйте флаг /error bounds_check, чтобы проверка для других недопустимых границ массива.
При указании выделения /error заглушки содержат код, который вызывает исключение, когда midl_user_allocate возвращает значение 0.
Параметр /error stub_data предотвращает сбой клиентских данных на сервере во время размежевывания, обеспечивая более надежный метод обработки операции размежевывания.
В Windows 2000 базовая подсистема маршалинга NDR во время выполнения выполняет большую часть этих проверок. Это означает, что если вы используете один из полностью интерпретируемых режимов (/Oi, /Oif) создания заглушки, выбор различных параметров проверки ошибок не повлияет на производительность.
Примеры
midl /error allocation filename.idl
midl /error none filename.idl
См. также раздел