Error code 997 при присвоении привилегий процессу
От: foe  
Дата: 29.09.09 09:16
Оценка:
Доброго времени суток!
Суть проблемы — есть функция, присваивающая процессу (своему) отладочные привилегии. В процессе работы выдает вышеуказанный код ошибки. Как понимаю из описания MSDN — перекрывающаяся операция ввода-вывода. Сам код функции такой:

bool AddDebugPrivileges(bool fEnable)
{
    bool fOk = false;
    HANDLE hPrivToken;
    //отладочная переменная!!
    DWORD LastError;

    if(OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hPrivToken))
    {
        TOKEN_PRIVILEGES tp;
        tp.PrivilegeCount = 1;
        LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tp.Privileges[0].Luid);//error code 997
        LastError = GetLastError();
        tp.Privileges[0].Attributes = fEnable ? SE_PRIVILEGE_ENABLED : 0;
        AdjustTokenPrivileges(&hPrivToken, FALSE, &tp, sizeof(tp), NULL, NULL);//косяк в хэндле
        LastError = GetLastError();
        fOk = (GetLastError() == ERROR_SUCCESS);
        CloseHandle(hPrivToken);
    }
    return(fOk);
};


Вызов LookupPrivilegeValue заканчивается той самой ошибкой — и, соответственно, ничего из присвоения привилегий не получается. Отсюда возникает вопрос — что может вызывать такую ошибку?

Если поможет, что вызов функции производится следующим образом:

#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>
#include <tchar.h>

#include "SysSnap.h"
#include "Output.h"


int main(int argc, CHAR* argv[])
{
    
    HANDLE hSnapHandle; //хэндл снапшота системы.
    PROCESSENTRY32 ProcEntry; //сюда бум загонять всю щнягу по процессам

    AddDebugPrivileges(true);

    if(CreateSnapshot(&hSnapHandle))
    {
        ProcEntry.dwSize = sizeof(PROCESSENTRY32);
        ListAllProcesses(hSnapHandle, &ProcEntry);
    }
    return 0;
}


29.09.09 13:21: Перенесено модератором из 'C/C++' — Кодт
cpp c++ error code 997 visual studio winapi
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.