BIND_OPTS 结构 (objidl.h)

包含名字对象绑定操作期间使用的参数。

可以使用 BIND_OPTS2BIND_OPTS3 结构代替 BIND_OPTS 结构。

语法

typedef struct tagBIND_OPTS {
  DWORD cbStruct;
  DWORD grfFlags;
  DWORD grfMode;
  DWORD dwTickCountDeadline;
} BIND_OPTS, *LPBIND_OPTS;

成员

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 毫秒后包装回零。 因此,调用方应注意不要无意中传递零值 (指示没有截止时间) ,并且名字对象实现应注意时钟包装问题。

注解

BIND_OPTS 结构存储在绑定上下文中;在绑定期间,复合名字对象的每个组件都使用相同的绑定上下文,从而允许将相同的参数传递给复合名字对象的所有组件。 有关绑定上下文的详细信息 ,请参阅 IBindCtx

名字对象客户端 (使用名字对象获取指向对象的接口指针,) 通常不需要为此结构的成员指定值。 CreateBindCtx 函数创建绑定上下文,并将绑定选项设置为适合大多数情况的默认值;BindMoniker 函数在创建绑定上下文以用于绑定名字对象时执行相同的操作。 如果要修改这些绑定选项的值,可以通过将 BIND_OPTS 结构传递给 IBindCtx::SetBindOptions 方法来执行此操作。 名字对象实现者可以将 BIND_OPTS 结构传递给 IBindCtx::GetBindOptions 方法,以检索这些绑定选项的值。

要求

要求
最低受支持的客户端 Windows 2000 专业版 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows 2000 Server [桌面应用 |UWP 应用]
标头 objidl.h

另请参阅

CreateBindCtx

IBindCtx

IMoniker