структура BIND_OPTS3 (objidl.h)
Содержит параметры, используемые в операции привязки моникера.
Синтаксис
typedef struct tagBIND_OPTS3 {
DWORD cbStruct;
DWORD grfFlags;
DWORD grfMode;
DWORD dwTickCountDeadline;
DWORD dwTrackFlags;
DWORD dwClassContext;
LCID locale;
COSERVERINFO *pServerInfo;
HWND hwnd;
} BIND_OPTS3, *LPBIND_OPTS3;
Члены
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 .
hwnd
Дескриптор окна, который становится владельцем пользовательского интерфейса повышения прав, если применимо. Если hwnd имеет значение NULL, COM вызовет функцию GetActiveWindow , чтобы найти дескриптор окна, связанный с текущим потоком. Это может произойти, если клиент является скриптом, который не может заполнить структуру BIND_OPTS3 . В этом случае COM попытается использовать окно, связанное с потоком скрипта.
Комментарии
Структура BIND_OPTS3 хранится в контексте привязки; один и тот же контекст привязки используется каждым компонентом составного моникера во время привязки, что позволяет передавать одинаковые параметры всем компонентам составного моникера. Дополнительные сведения о контекстах привязки см. в разделе IBindCtx .
Клиенты моникера (используют моникер для получения указателя интерфейса на объект) обычно не нужно указывать значения для членов этой структуры. Функция CreateBindCtx создает контекст привязки с параметрами привязки, заданными значениями по умолчанию, которые подходят для большинства ситуаций; Функция BindMoniker выполняет то же самое при создании контекста привязки для использования в моникере привязки. Если вы хотите изменить значения этих параметров привязки, это можно сделать, передав структуру BIND_OPTS3 методу IBindCtx::SetBindOptions . Реализации моникеров могут передавать структуру BIND_OPTS3 методу IBindCtx::GetBindOptions для получения значений этих параметров привязки.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | сборка Windows 10 20348 |
Минимальная версия сервера | сборка Windows 10 20348 |
Верхняя часть | objidl.h |