2013-06-02 73 views
0

我在調用GetTokenInformation時出了問題, 出於某種原因,它在Windows Server 2003 32bit上失敗,但在服務器2008 64位上成功。在Windows Server 2003上GetTokenInformation失敗(錯誤998),但在2008上工作

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 

到GetTokenInformation第二個通話Windows 2003的總是與錯誤998(「無效訪問內存位置」)返回0。 我認爲它與pSIDTokenUser大小/對齊(我使用默認)等有關,但無法找到原因。

謝謝。

回答

1

根據函數註釋,最終參數ReturnLength不是可選的。不要在第二次調用中傳遞NULL。你似乎在Windows 2008上越來越遠。

+0

工作就像一個魅力,非常感謝!它有點微妙,尤其是自2008年開始工作以來。 – roybj

相關問題