Почему при вызове LookupPrivelegeValue в eax возвращается "1", а LastError даёт ERROR_IO_PENDING? Но при этом AdjustTokenPrivileges работает нормально. Так и должно быть? В msdn ответа не нашел. Код (Text): format PE GUI 4.0 entry start ;___________________________________________________________________________________________________________________________ TOKEN_ADJUST_PRIVILEGES = 0x0020 TOKEN_QUERY = 0x0008 SE_PRIVILEGE_ENABLED = 0x0002 ;___________________________________________________________________________________________________________________________ section '.code' code readable executable writeable start: invoke GetCurrentProcess invoke OpenProcessToken, eax, TOKEN_ADJUST_PRIVILEGES+TOKEN_QUERY, phToken invoke LookupPrivilegeValue, NULL, pszPrivName, pNewState.Luid test eax, eax jnz @f invoke CloseHandle, phToken jmp finish @@: invoke AdjustTokenPrivileges, [phToken], FALSE, pNewState, NULL, NULL, NULL finish: invoke ExitProcess,0 ;___________________________________________________________________________________________________________________________ section '.data' code readable executable writeable phToken dd ? pszPrivName db 'SeDebugPrivilege',0 align 4 pNewState: .PrivilegeCount dd 1 .Luid dd ? .Attributes dd SE_PRIVILEGE_ENABLED .Size = $ - pNewState pluid dd ? ReturnLength dd ? ;___________________________________________________________________________________________________________________________ section '.idata' import data readable writeable library kernel32,'kernel32.DLL',\ advapi32,'advapi32.dll' include '%includepath%\APIA\kernel32.inc' include '%includepath%\APIA\advapi32.INC'
Как раз это то я и нашел. У меня функция возвращает nonzero. A GetLastError даёт ERROR_IO_PENDING. Вопрос почему??
Так что тебя беспокоит? Это код последней ошибки. Он не обязательно выставляется последней вызванной функцией. Вот если функция вернула ошибку, только тогда нужно проверять LastError.
Спасибо понял. Я думал что перед выходм из LookupPrivelegeValue, LookupPrivelegeValue делает SetLastError(ERROR_SUCCSES).