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

名字对象可以在链接跟踪期间使用此值。 如果移动了名字对象引用的原始持久化数据,则名字对象可以通过一些适当的机制搜索原始数据来尝试重新建立链接。 此成员提供有关应如何解析链接的其他信息。 请参阅 IShellLink::ResolvefFlags 参数的文档。

COM 的文件名字对象实现使用 shell 链接机制来重新建立链接并将这些标志传递给 IShellLink::Resolve

dwClassContext

类上下文,取自 CLSCTX 枚举,用于实例化对象。 名字对象通常将此值传递给 CoCreateInstancedwClsContext 参数。

locale

LCID 值,指示客户端对要由它们绑定到的对象使用的区域设置的首选项。 名字对象将此值传递给 IClassActivator::GetClassObject

pServerInfo

指向 COSERVERINFO 结构的指针。 此成员允许调用 IMoniker::BindToObject 的客户端指定服务器信息。 客户端可以将 BIND_OPTS2 结构传递给 IBindCtx::SetBindOptions 方法。 如果在 COSERVERINFO 结构中指定了服务器名称,则名字对象绑定将转发到指定的计算机。 SetBindOptions 仅复制 BIND_OPTS2的结构成员,而不复制 COSERVERINFO 结构及其包含的指针。 在释放绑定上下文之前,调用方不得释放任何这些指针。 COM 的新类名字对象当前不遵循 pServerInfo 标志。

hwnd

成为提升 UI 所有者的窗口的句柄(如果适用)。 如果 hwndNULL,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

另请参阅

CreateBindCtx

IBindCtx

IMoniker