RtlEqualPrefixSid 函数 (ntifs.h)

RtlEqualPrefixSid 例程确定两个安全标识符 (SID) 前缀是否相等。 SID 前缀是除最后一个子授权值外的完整 SID。

语法

NTSYSAPI BOOLEAN RtlEqualPrefixSid(
  [in] PSID Sid1,
  [in] PSID Sid2
);

参数

[in] Sid1

指向要比较的第一个 SID 结构的指针。 必须指向有效的 SID。

[in] Sid2

指向要比较的第二个 SID 结构的指针。 必须指向有效的 SID。

返回值

如果 SID 前缀相等,RtlEqualPrefixSid 返回 TRUE;否则返回 FALSE。 如果任一 SID 结构无效,则返回值未定义。

注解

RtlEqualPrefixSid 使一个域中的服务器能够验证用户是否尝试登录到另一个域。 例如,如果用户尝试从 LocalDomain 中的工作站登录到 RemoteDomain,则 LocalDomain 的服务器可以从 RemoteDomain 请求用户的 SID 和用户的组。 RemoteDomain 的域控制器使用相关的 SID 进行响应。

指定域的所有 SID 都必须具有相同的前缀。 当服务器收到用户的 SID 时,它可以为每个 SID 调用 RtlEqualPrefixSid ,将用户或组 SID 与 RemoteDomain 的 SID 进行比较。 如果任何 SID 前缀不相等,服务器将拒绝登录尝试。

建议先修改域的 SID,然后再将其与组或用户 SID 进行比较。 如果 RemoteDomain 的 SID 为 S-1-1234-8,则该域的每个组或用户 SID 都将有 S-1-1234-8 作为其前缀。 若要使用 RtlEqualPrefixSid 比较 SID,调用方会复制域 SID 并将任何子授权相对标识符值添加到副本,从而创建 S-1-1234-8-0 形式的 SID。 (相对标识符(或 RID)是 SID 的一部分,用于标识与颁发 SID 的颁发机构相关的用户或组。) 调用方随后使用修改后的域 SID 作为模板,组和用户 SID 将与之进行比较。

有关安全性和访问控制的详细信息,请参阅 面向驱动程序开发人员的 Windows 安全模型 以及 Windows SDK 中有关这些主题的文档。

要求

要求
目标平台 通用
标头 ntifs.h (包括 Ntifs.h)
Library Ntdll.lib
DLL Ntdll.dll
IRQL <= APC_LEVEL

另请参阅

RtlCopySid

RtlEqualSid

RtlValidSid

SID