GetTokenInformation函数检索有关访问令牌的指定类型的信息。调用进程必须具有获取信息的适当访问权限。
BOOL GetTokenInformation(
HANDLE 【TokenHandle】, | //访问令牌的句柄 |
TOKEN_INFORMATION_CLASS 【TokenInformationClass】, | //要检索的信息类型 |
LPVOID 【TokenInformation】, | //检索到的信息的地址 |
DWORD 【TokenInformationLength】, | //信息缓冲区的大小 |
PDWORD 【ReturnLength】 | //所需缓冲区大小的地址 |
); |
参数
【TokenHandle】
标识检索信息的访问令牌。
【TokenInformationClass】
指定TOKEN_INFORMATION_CLASS枚举类型的变量,标识函数检索的信息类型。
【TokenInformation】
指向缓冲区,功能填充所请求的信息。放入此缓冲区的结构取决于【TokenInformationClass】参数指定的信息类型,如以下列表所示:
令牌信息类 | 退回结构 |
TokenUser | TOKEN_USER结构。需要TOKEN_QUERY访问才能检索此信息。 |
TokenGroups | TOKEN_GROUPS结构。需要TOKEN_QUERY访问才能检索此信息。 |
TokenPrivileges | TOKEN_PRIVILEGES结构。需要TOKEN_QUERY访问才能检索此信息。 |
TokenOwner | TOKEN_OWNER结构。需要TOKEN_QUERY访问才能检索此信息。 |
TokenPrimaryGroup | TOKEN_PRIMARY_GROUP结构。需要TOKEN_QUERY访问才能检索此信息。 |
TokenDefaultDacl | TOKEN_DEFAULT_DACL结构。需要TOKEN_QUERY访问才能检索此信息。 |
TokenSource | TOKEN_SOURCE结构。需要TOKEN_QUERY_SOURCE访问才能检索此信息。 |
TokenType | TOKEN_TYPE枚举类型。需要TOKEN_QUERY访问才能检索此信息。 |
TokenImpersonationLevel | SECURITY_IMPERSONATION_LEVEL枚举类型。需要TOKEN_QUERY访问来检索有关令牌的信息。如果访问令牌不是模拟令牌,则该函数将失败。 |
TokenStatistics | TOKEN_STATISTICS结构。需要TOKEN_QUERY访问才能检索此信息。 |
检索结构和枚举类型的格式列在以下备注部分。
【TokenInformationLength】
指定【TokenInformation】参数指向的缓冲区的大小(以字节为单位)。
【ReturnLength】
指向一个变量,接收【TokenInformation】参数指向的缓冲区所需的实际字节数。如果该值大于【TokenInformationLength】参数中指定的值,则该函数将失败,并且不会在缓冲区中存储数据。
如果【TokenInformationClass】参数的值为TokenDefaultDacl且令牌没有默认访问控制列表,则该函数将由【ReturnLength】指向的变量设置为零,并且不将数据存储在缓冲区中。
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.
也可以看看
AdjustTokenGroups,AdjustTokenPrivileges,OpenProcessToken,OpenThreadToken,SetTokenInformation, SECURITY_IMPERSONATION_LEVEL, TOKEN_DEFAULT_DACL, TOKEN_GROUPS, TOKEN_INFORMATION_CLASS, TOKEN_OWNER, TOKEN_PRIMARY_GROUP, TOKEN_PRIVILEGES, TOKEN_SOURCE, TOKEN_STATISTICS, TOKEN_TYPE, TOKEN_USER