GetTokenInformation 函数 (securitybaseapi.h)

GetTokenInformation 函数检索有关访问令牌的指定类型的信息。 调用进程必须具有适当的访问权限才能获取信息。

若要确定用户是否是特定组的成员,请使用 CheckTokenMembership 函数。 若要确定应用容器令牌的组成员身份,请使用 CheckTokenMembershipEx 函数。

语法

BOOL GetTokenInformation(
  [in]            HANDLE                  TokenHandle,
  [in]            TOKEN_INFORMATION_CLASS TokenInformationClass,
  [out, optional] LPVOID                  TokenInformation,
  [in]            DWORD                   TokenInformationLength,
  [out]           PDWORD                  ReturnLength
);

parameters

[in] TokenHandle

从中检索信息的访问令牌的句柄。 如果 TokenInformationClass 指定 TokenSource,则句柄必须具有TOKEN_QUERY_SOURCE访问权限。 对于所有其他 TokenInformationClass 值,句柄必须具有TOKEN_QUERY访问权限。

[in] TokenInformationClass

指定 TOKEN_INFORMATION_CLASS 枚举类型的值,以标识函数检索的信息类型。 检查 TokenIsAppContainer 并使其返回 0 的任何调用方还应验证调用方令牌是否不是标识级别模拟令牌。 如果当前令牌不是应用容器,而是标识级别令牌,则应返回 AccessDenied

[out, optional] TokenInformation

指向函数用请求的信息填充的缓冲区的指针。 放入此缓冲区中的结构取决于 TokenInformationClass 参数指定的信息类型。

[in] TokenInformationLength

指定 TokenInformation 参数指向的缓冲区的大小(以字节为单位)。 如果 TokenInformationNULL,则此参数必须为零。

[out] ReturnLength

指向变量的指针,该变量接收 TokenInformation 参数指向的缓冲区所需的字节数。 如果此值大于 TokenInformationLength 参数中指定的值,则函数将失败,并且不会在缓冲区中存储任何数据。

如果 TokenInformationClass 参数的值为 TokenDefaultDacl,并且令牌没有默认 DACL,则该函数会将 ReturnLength 指向的变量设置为 sizeof(TOKEN_DEFAULT_DACL),并将 TOKEN_DEFAULT_DACL 结构的 DefaultDacl 成员设置为 NULL

返回值

如果该函数成功,则返回值为非零值。

如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。

要求

   
最低受支持的客户端 Windows XP [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2003 [桌面应用 | UWP 应用]
目标平台 Windows
标头 securitybaseapi.h (包括 Windows.h)
Library Advapi32.lib
DLL Advapi32.dll

请参阅

访问控制概述

AdjustTokenGroups

AdjustTokenPrivileges

基本访问控制函数

CheckTokenMembership

OpenProcessToken

OpenThreadToken

SECURITY_IMPERSONATION_LEVEL

SetTokenInformation

TOKEN_DEFAULT_DACL

TOKEN_GROUPS

TOKEN_GROUPS_AND_PRIVILEGES

TOKEN_INFORMATION_CLASS

TOKEN_OWNER

TOKEN_PRIMARY_GROUP

TOKEN_PRIVILEGES

TOKEN_SOURCE

TOKEN_STATISTICS

TOKEN_TYPE

TOKEN_USER