структура BIND_OPTS (objidl.h)

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

Вместо структуры BIND_OPTS можно использовать структуру BIND_OPTS2 или BIND_OPTS3.

Синтаксис

typedef struct tagBIND_OPTS {
  DWORD cbStruct;
  DWORD grfFlags;
  DWORD grfMode;
  DWORD dwTickCountDeadline;
} BIND_OPTS, *LPBIND_OPTS;

Члены

cbStruct

Размер этой структуры в байтах.

grfFlags

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

grfMode

Флаги, которые должны использоваться при открытии файла, содержащего объект, определенный моникером. Возможные значения — константы STGM. Операция привязки использует эти флаги в вызове IPersistFile::Load при загрузке файла. Если объект уже запущен, эти флаги игнорируются операцией привязки. Функция CreateBindCtx инициализирует это поле для STGM_READWRITE.

dwTickCountDeadline

Время, к которому вызывающий объект хочет, чтобы операция привязки была завершена, в миллисекундах. Этот элемент позволяет вызывающей стороны ограничить время выполнения операции, когда скорость имеет первостепенное значение. Нулевое значение указывает на отсутствие крайнего срока. Вызывающие абоненты чаще всего используют эту возможность при вызове метода IMoniker::GetTimeOfLastChange , хотя ее можно применить и к другим операциям. Функция CreateBindCtx инициализирует это поле нулевым значением.

Типичные крайние сроки позволяют выполнить несколько сотен миллисекундах. Этот крайний срок является рекомендацией, а не требованием; однако операции, превышающие крайний срок на большое количество, могут привести к задержкам для конечного пользователя. Каждая реализация моникера должна пытаться завершить свою работу к крайнему сроку или завершиться ошибкой MK_E_EXCEEDEDDEADLINE.

Если операция привязки превышает свой крайний срок, так как один или несколько необходимых объектов не выполняются, реализация моникера должна зарегистрировать объекты, ответственные в контексте привязки, с помощью IBindCtx::RegisterObjectParam. Объекты должны быть зарегистрированы под именами параметров "ExceededDeadline", "ExceededDeadline1", "ExceededDeadline2" и т. д. Если позднее вызывающий объект находит объект в таблице выполняющихся объектов, вызывающий объект может повторить операцию привязки.

Функция GetTickCount указывает количество миллисекунд с момента запуска системы и выполняет перенос обратно к нулю после 2^31 миллисекунд. Следовательно, вызывающим абонентам следует быть осторожными, чтобы непреднамеренно не передать нулевое значение (что указывает на отсутствие крайнего срока), а реализации моникеров должны учитывать проблемы с переносом часов.

Комментарии

Структура BIND_OPTS хранится в контексте привязки; один и тот же контекст привязки используется каждым компонентом составного моникера во время привязки, что позволяет передавать одинаковые параметры всем компонентам составного моникера. Дополнительные сведения о контекстах привязки см. в разделе IBindCtx .

Клиенты моникера (используют моникер для получения указателя интерфейса на объект) обычно не нужно указывать значения для членов этой структуры. Функция CreateBindCtx создает контекст привязки с параметрами привязки, заданными значениями по умолчанию, которые подходят для большинства ситуаций; Функция BindMoniker выполняет то же самое при создании контекста привязки для использования в моникере привязки. Если вы хотите изменить значения этих параметров привязки, это можно сделать, передав структуру BIND_OPTS методу IBindCtx::SetBindOptions . Реализации моникеров могут передавать структуру BIND_OPTS методу IBindCtx::GetBindOptions для получения значений этих параметров привязки.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Профессиональная [классические приложения | Приложения UWP]
Минимальная версия сервера Windows 2000 Server [классические приложения | Приложения UWP]
Верхняя часть objidl.h

См. также раздел

CreateBindCtx

IBindCtx

IMoniker