структура 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 |