CBGETRSVPOBJECTS 回调函数 (lpmapi.h)

cbGetRsvpObjects 函数是用于 LPM 的回调函数,用于异步返回LPM_GetRsvpObjects请求的结果。 LPM 调用 cbGetRsvpObjects 函数,以异步方式将策略数据对象返回到 PCM 以LPM_GetRsvpObjects 请求。 仅当 LPM 返回LPM_RESULTS_DEFER PCM 的LPM_GetRsvpObjects请求时,才应使用 cbGetRsvpObjects 函数。

语法

CBGETRSVPOBJECTS Cbgetrsvpobjects;

ULONG * Cbgetrsvpobjects(
  [in] LPM_HANDLE LpmHandle,
  [in] RHANDLE RequestHandle,
  [in] int LpmError,
  [in] int RsvpObjectsCount,
  [in] RsvpObjHdr **ppRsvpObjects
)
{...}

参数

[in] LpmHandle

LPM 的唯一句柄,如 LPM_Initialize 中提供。 PCM 将忽略未附带有效句柄的任何结果。

[in] RequestHandle

将此请求与所有其他请求区分开来的唯一句柄,该句柄从相应的 LPM_GetRsvpObjects 请求中提供。

[in] LpmError

错误值,由 PCM 用于确定是否应使用此函数返回的策略数据对象。 除 LPM_OK 之外的任何值都将导致 PCM 忽略 *RsvpObjects 的内容。

请注意,如果 LPM 返回错误,则应释放在 LPM_GetRsvpObjects 请求处理期间分配的缓冲区;这些缓冲区应已使用 MemoryAllocator 函数进行分配,该函数在 LPM_Initialize 函数中作为其 FreeMemory 参数提供。

如果未返回任何策略数据对象,必须将 LpmError 设置为 LPM_OK,RsvpObjectsCount 必须设置为零,并且 *RsvpObjects 必须设置为 null。 LPM 可以通过将 LpmError 的值设置为 LPV_DROP_MSG 来强制 SBM 停止发送 RSVP 消息。

[in] RsvpObjectsCount

要返回的策略数据对象数。 如果未返回任何策略数据对象,则必须将 LpmError 参数设置为 LPM_OK,RsvpObjectsCount 参数必须设置为零,并且 *RsvpObjects 参数必须设置为 null。

[in] ppRsvpObjects

指向策略数据对象的指针数组。 应使用在 LPM_Initialize 函数中提供的 MemoryAllocator 函数分配包含策略数据对象的缓冲区。 子网带宽管理器 (SBM) 会在不再需要策略数据对象时释放它们。

如果未返回任何策略数据对象,必须将 LpmError 设置为 LPM_OK,RsvpObjectsCount 必须设置为零,并且 *RsvpObjects 必须设置为 null。

返回值

返回值由提供回调的应用程序定义。

注解

如果只需要默认选项,则LPM不需要发送策略数据选项。 由于策略数据对象的内容对 PCM 不透明,因此 PCM 不会对策略元素标头和内容进行主机到网络顺序转换:PCM 要求 LPM 按网络顺序生成策略元素,以便策略元素的接收方可以正确分析它们。 但是,策略数据对象标头必须位于主机中,以便允许 PCM 将策略元素合并 ((如果可能或适用)) 。

从支持所有 PE 类型的LPM中,PCM 需要完整的策略数据对象及其所需的策略数据选项。 此外,PCM 还要求策略数据对象标头处于主机顺序;LPM 负责处理策略选项和策略元素的主机到网络顺序转换。

如果任何 LPM 返回LPV_DROP_MSG,SBM 将不会发送 RSVP 刷新消息,但会释放其他 LPM 返回的策略数据对象 (那些未返回LPV_DROP_MSG的对象(如果有任何) )。 如果不发送 RSVP 刷新消息,流的 RSVP 状态上游和下游都将开始过期,并最终被删除。

注意 即使部分或所有 LPM 未能及时返回策略数据对象,SBM 也会发送 RSVP 刷新消息,即使此类传出 RSVP 消息可能不包含它应使用的所有策略数据对象。
 

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 lpmapi.h

另请参阅

LPM_GetRsvpObjects

LPM_Initialize