GetTokenInformation返回ERROR_INSUFFICIENT_BUFFER

时间:2013-02-25 18:00:37

标签: c++ windows winapi

以下代码返回ERROR_INSUFFICIENT_BUFFER错误:

DWORD dwReturnedDataSize;
if (!GetTokenInformation(hToken,TokenPrivileges,NULL,0,&dwReturnedDataSize))
{
    CloseHandle(hToken);
    return false; 
}

我无法弄清楚原因。

1 个答案:

答案 0 :(得分:4)

这是因为您在模式中调用了该函数,它告诉您需要多少字节来检索此句柄的基础令牌信息数据。您现在需要使用返回的数据长度和至少该大小的缓冲区进行第二次调用。

Docs很有帮助。

  

ReturnLength [out]

     

指向接收数量的变量的指针   TokenInformation指向的缓冲区所需的字节数   参数。如果此值大于。中指定的值   TokenInformationLength参数,函数失败并存储否   缓冲区中的数据。