我在调用 GetTokenInformation 时遇到问题,由于某种原因,它在 windows server 2003 32bit 上失败,但在 server 2008 64bit 上成功。
PTOKEN_USER pSIDTokenUser = NULL;
DWORD dwReturnLength;
if (!GetTokenInformation(hToken, TokenUser, NULL, 0, &dwReturnLength) && GetLastError() != ERROR_INSUFFICIENT_BUFFER)
{
//handle error
}
pSIDTokenUser = (PTOKEN_USER)new BYTE[dwReturnLength];
memset(pSIDTokenUser, 0, dwReturnLength);
if (!pSIDTokenUser)
//handle error
if (!GetTokenInformation(hToken, TokenUser, pSIDTokenUser, dwReturnLength, NULL))
//handle error
在 Windows 2003 上对 GetTokenInformation 的第二次调用总是返回 0 并返回错误 998(“对内存位置的访问无效”)。我认为它与 pSIDTokenUser 大小/对齐(我使用默认值)等有关,但找不到原因。
谢谢。