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


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

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

Синтаксис

typedef struct tagBIND_OPTS2 {
  DWORD        cbStruct;
  DWORD        grfFlags;
  DWORD        grfMode;
  DWORD        dwTickCountDeadline;
  DWORD        dwTrackFlags;
  DWORD        dwClassContext;
  LCID         locale;
  COSERVERINFO *pServerInfo;
} BIND_OPTS2, *LPBIND_OPTS2;

Члены

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 миллисекунд. Следовательно, вызывающим абонентам следует быть осторожными, чтобы непреднамеренно не передать нулевое значение (что указывает на отсутствие крайнего срока), а реализации моникеров должны учитывать проблемы с переносом часов.

dwTrackFlags

Моникер может использовать это значение во время отслеживания ссылок. Если исходные сохраненные данные, на которые ссылается моникер, были перемещены, моникер может попытаться восстановить связь, выполнив поиск исходных данных с помощью соответствующего механизма. Этот элемент предоставляет дополнительные сведения о том, как должна быть разрешена ссылка. См. документацию по параметру fFlags в IShellLink::Resolve.

Реализация моникера файла COM использует механизм связи оболочки для повторного создания ссылок и передает эти флаги в IShellLink::Resolve.

dwClassContext

Контекст класса, взятый из перечисления CLSCTX , который должен использоваться для создания экземпляра объекта . Моникеры обычно передают это значение в параметр dwClsContextобъекта CoCreateInstance.

locale

Значение LCID, указывающее предпочтение клиента для языкового стандарта, используемого объектом, к которому они привязаны. Моникер передает это значение в IClassActivator::GetClassObject.

pServerInfo

Указатель на структуру COSERVERINFO . Этот член позволяет клиентам вызывать IMoniker::BindToObject для указания сведений о сервере. Клиенты могут передавать структуру BIND_OPTS2 методу IBindCtx::SetBindOptions . Если имя сервера указано в структуре COSERVERINFO , привязка моникера будет перенаправлена на указанный компьютер. SetBindOptions копирует только элементы структуры BIND_OPTS2, но не структуру COSERVERINFO и содержащиеся в ней указатели. Вызывающие абоненты не могут освобождать какие-либо из этих указателей, пока контекст привязки не будет освобожден. Новый моникер класса COM в настоящее время не учитывает флаг pServerInfo .

Комментарии

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

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

Требования

Требование Значение
Минимальная версия клиента сборка Windows 10 20348
Минимальная версия сервера сборка Windows 10 20348
Верхняя часть objidl.h

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

BIND_OPTS3

CreateBindCtx

IBindCtx

IMoniker