Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Расширения Майкрософт на языке IDL поддерживают несколько параметров дескриптора, которые отображаются в позициях, отличных от первого, левого, параметра. В следующих шагах описывается последовательность, которую выполняет компилятор MIDL для разрешения параметра binding-handle в режиме совместимости DCE (/osf), а также в режиме по умолчанию (расширенная корпорация Майкрософт).
Режим совместимости DCE
- Дескриптор привязки, который отображается в первой позиции.
- Левая [в, context_handle] параметр.
- Неявный дескриптор привязки, заданный [implicit_handle] или [auto_handle].
- Если ACF отсутствует, по умолчанию используется [auto_handle].
Режим по умолчанию
- Самый левый явный дескриптор привязки.
- Неявный дескриптор привязки, заданный [implicit_handle] или [auto_handle].
- Если ACF отсутствует, по умолчанию используется [auto_handle].
Компиляторы IDL DCE ищут явный дескриптор привязки в качестве первого параметра. Если первый параметр не является дескриптором привязки и одним или несколькими дескрипторами контекста, то в качестве дескриптора привязки используется самый левый дескриптор контекста. Если первый параметр не является дескриптором и нет дескрипторов контекста, процедура использует неявную привязку с помощью атрибута ACF [implicit_handle] или [auto_handle].
Расширения Майкрософт для IDL позволяют дескриптор привязки находиться в позиции, отличной от первого параметра. Самый левый [в] явный дескриптор параметра , является ли он примитивным, программистом или дескриптором контекста — дескриптором привязки. Если нет параметров дескриптора, процедура использует неявную привязку с помощью атрибута ACF [implicit_handle] или [auto_handle].
Следующие правила применяются как к режиму совместимости DCE (/osf), так и к режиму по умолчанию:
- Привязка автоматического дескриптора используется, если ACF отсутствует.
- Явные [в] или [в, вне] обрабатывает любую неявную привязку, указанную для интерфейса.
- Несколько [в] или [в, вне] примитивные дескрипторы не поддерживаются.
- Допускается несколько [в] или [в, явные маркеры контекста.
- Все определяемые программистом параметры дескриптора, кроме параметра binding-handle, обрабатываются как трансмисные данные.
В следующей таблице содержатся примеры и описывается назначение дескрипторов привязки в каждом режиме компилятора.
| Пример | Описание |
|---|---|
|
Явный дескриптор не указан. Используется неявный дескриптор привязки, заданный [implicit_handle] или [auto_handle]. Если ACF отсутствует, используется автоматический дескриптор. |
|
Указан явный дескриптор типа handle_t. Параметр H — это дескриптор привязки для процедуры. |
|
Первый параметр не является дескриптором. В режиме по умолчанию самый левый параметр дескриптора H — это дескриптор привязки. В режиме /osf используется неявная привязка. Сообщается об ошибке, так как второй параметр, как ожидается, будет трансмисирован, и handle_t невозможно передать. |
|
Первый параметр не является дескриптором. В режиме по умолчанию самый левый параметр дескриптора H — это дескриптор привязки. Заглушки вызывают предоставленные пользователем подпрограммы MY_HDL_bind и MY_HDL_unbind. Используется неявная привязка в режиме in/osf. Заданный программистом параметр дескриптора H рассматривается как трансмисные данные. |
|
Первый параметр — это дескриптор привязки. Параметр H является параметром привязки. Второй параметр дескриптора, определенный программистом, обрабатывается как трансмисные данные. |
|
Дескриптор привязки — это дескриптор контекста. Параметр H — это дескриптор привязки. |