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


Автоматические дескрипторы привязки

Автоматические дескрипторы привязки полезны, если приложению не требуется конкретный сервер, и если он не должен поддерживать сведения о состоянии между клиентом и сервером. При использовании автоматического дескриптора привязки вам не нужно писать код клиентского приложения для работы с привязкой и дескрипторами— просто укажите использование дескриптора автоматической привязки в файле конфигурации приложения (ACF). Заглушка определяет дескриптор и управляет привязкой.

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

Заметка

Автоматическое дескриптор не поддерживается для платформы Macintosh.

 

Вы указываете использование автоматических дескрипторов, включив атрибут [auto_handle] в ACF. В примере метки времени используется следующий ACF:

/* ACF file */
[
  auto_handle
]
interface autoh
{
}

Если ACF не содержит ни одного другого атрибута дескриптора, а когда удаленные процедуры не используют явные дескрипторы, компилятор MIDL использует автоматические дескрипторы по умолчанию. Он также использует автоматические дескрипторы в качестве значения по умолчанию, если ACF отсутствует.

Удаленные процедуры указываются в файле IDL. Автоматический дескриптор не должен отображаться как аргумент удаленной процедуры. Например:

/* IDL file */
[ 
  uuid (6B29FC40-CA47-1067-B31D-00DD010662DA),
  version(1.0),
  pointer_default(unique)
]
interface autoh
{
  void GetTime([out] long * time);
  void Shutdown(void);
}

Преимущество автоматического дескриптора заключается в том, что разработчику не нужно писать код для управления дескриптором; заглушки автоматически управляют привязкой. Это значительно отличается от примера Hello, World, где клиент управляет неявным примитивным дескриптором, определенным в ACF, и должен вызывать несколько функций во время выполнения, чтобы установить дескриптор привязки.