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

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

注解

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