LPM_AdmitRsvpMsg 函数 (lpmapi.h)

LPM_ADMITRSVPMSG函数由 PCM 调用,用于将 RSVP 消息传递给 LPM,以做出基于策略的允许控制决策。 调用 LPM_AdmitRsvpMsg 的结果可以通过适当设置返回值,以同步或异步方式传回 PCM。 应通过调用 cbAdmitResult 函数返回异步结果。

语法

ULONG LPM_AdmitRsvpMsg(
  [in]  RHANDLE         PcmReqHandle,
  [in]  RSVP_HOP        *pRecvdIntf,
  [in]  RSVP_MSG_OBJS   *pRsvpMsgObjs,
  [in]  int             RcvdRsvpMsgLength,
  [in]  UCHAR           *RcvdRsvpMsg,
  [out] ULONG           *pulPcmActionFlags,
  [out] POLICY_DECISION *pPolicyDecisions,
  [out] void            *Reserved
);

参数

[in] PcmReqHandle

从所有其他请求中标识此请求的唯一句柄。 当通过调用 cbAdmitResult 为单个请求异步返回结果时,LPM 必须将此句柄传递给 PCM。 返回结果后, PcmReqHandle 参数将变为无效,要求每个请求从 PCM 获取其自己的唯一 PcmReqHandle

[in] pRecvdIntf

指向接收消息的接口的指针。 接收的接口 IP 地址作为 RSVP HOP 对象提供,逻辑接口句柄设置为 SNMP 索引。 请注意,由于 Windows 2000 的即插即用功能,接口索引号可能会随着接口的添加和删除而更改。

[in] pRsvpMsgObjs

从 RSVP 接收的对象。 SBM 将收到的 RSVP 消息解压缩到单个对象中,并将此类 RSVP 对象的内容转换为主机顺序,并在 Lpmapi.h 中定义的 RSVP_MSG_OBJS 结构中提供它们。 提供了以下对象。

[in] RcvdRsvpMsgLength

收到的 RSVP 消息的长度(以字节为单位)。

含义
RsvpMsgType
RSVP 消息类型,由 RSVP 协议定义。
RsvpSession
指向 RSVP 会话的指针,由 RSVP 协议定义。 请注意,内容按主机顺序排列。
RsvpFromHop
指向从中接收 RSVP 消息的跃点的指针。 请注意,内容按主机顺序排列。
RsvpScope
指向 RSVP 范围对象的指针。
RsvpStyle
指向 RSVP 预留样式的指针,由 RSVP 协议定义。 请注意,内容按主机顺序排列。
FlowDescListCount
流描述符的数目。
FlowDescList
流描述符指针的数组。
PolicyDataCount
策略数据对象的数目。
PolicyDataObjects
策略数据对象指针的数组。 请注意,只有 RSVP 对象标头和策略选项将转换为主机顺序,但策略元素标头以及内容按网络顺序保留;PCM 无法将后者转换为主机顺序,因为 PCM 无法分析策略元素。 请注意,Microsoft 提供的 LPM(Msidlpm.dll)会将策略元素内容重新排序为主机顺序。
ErrorSpec
指向接收的 RSVP ERROR_SPEC 对象的指针。

[in] RcvdRsvpMsg

RSVP 消息,按网络顺序排列。

[out] pulPcmActionFlags

用于指定 PCM 请求的操作的标志。 LPM 当前可以将此参数设置为FORCE_IMMEDIATE_REFRESH请求立即刷新被允许的消息。 如果检测到策略数据发生更改,LPM 可以设置此标志,而该更改需要立即转发。 在发送之前,SBM 要求 LPM 为传出刷新消息提供策略信息。

请注意,当接受新的 PATH 消息时,LPM 不需要设置此标志;SPM 会自动向接收方发送新的 PATH 消息。

[out] pPolicyDecisions

指向策略决策的指针。 LPM 必须使用LPM_Initialize函数调用中提供的内存分配器分配 缓冲区;SBM 在对 pPolicyDecisions 执行操作后释放缓冲区。 仅当函数返回LPM_RESULT_READY时,PCM 才会查看 pPolicyDecisions 。 必须为 FlowDescList 中的每个流返回同步策略决策,并且 pPolicyDecisions 数组中的条目数必须等于 FlowDescListCount。 每个策略决策都包含下表中显示的值。

含义
LpmPriorityValue
指向从 LPM 接收 LPM 优先级值的缓冲区的指针。 请注意,仅当LPM_AdmitRsvpMsg的返回值设置为 LPM_RESULT_READY 时,PCM 才会查看此参数。 如果 LPM 同步返回结果,则必须将此参数设置为有效的优先级值。 有关详细信息 ,请参阅本地策略模块
PolicyErrorCode
指向策略错误代码的指针。 如果请求被同步拒绝,则 LPM 必须为此参数提供非零值;当将 PATHERR 或 RESVERR 消息作为基于策略的允许控制失败的结果发送 (时,SBM 会将此值与 PolicyErrorValue 一起复制到 RSVP 错误对象中,以提供拒绝请求) 的原因。
PolicyErrorValue
指向策略错误值的指针。 如果请求被同步拒绝,则 LPM 必须为此参数提供非零值;由于基于策略的允许控制失败,SBM 会将此值与 PolicyErrorCode 一起复制到 RSVP 错误对象中, (发送 PATHERR 或 RESVERR 消息,以提供拒绝请求) 的原因。
 

由于 LPM 的返回POLICY_DECISION是一个数组,因此 LPM 可以接受 FlowDescList 中的一部分流,并拒绝其中的其余部分(如果适用)。 例如,由于 FF 样式 RESV 消息可以包含多个流,当 LPM 拒绝某些流并接受其他流时,SBM 会为每个被拒绝的流生成单独的 RESVERR 消息;在发送 RESVERR 消息之前,PCM 会调用每个 LPM,为每个传出 RESVERR 消息提供策略数据对象。

[out] Reserved

保留供将来使用。

返回值

此函数返回 ULONG。

注解

子网带宽管理器 (SBM) 将 RSVP PATH、RESV、PATHERR、RESVERR、PATH_TEAR和RESV_TEAR消息转发到 PCM。 如果请求通过基于 LPM 策略的许可 (在这种情况下,成功状态通过 PCM 传递到 SBM) ,SBM 将执行基于资源的允许控制作为其 RSVP 处理的一部分;如果基于资源的允许控制失败,SBM 将指示 PCM 指示每个 LPM 通过 LPM_CommitResv 函数删除其状态。 在这种情况下,SBM (而不是) 的LPM将创建必要的 RSVP 错误消息。

要求

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

另请参阅

LPM_Initialize

cbAdmitResult

cbGetRsvpObjects