Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.01.06;
Скачать: [xml.tar.bz2];

Вниз

Shutdown - Вопрос избитый но дело не в этом .   Найти похожие ветки 

 
vic_774N   (2002-11-19 17:57) [0]

Уважеемые мастера !

Вот этот участок кода написан в отдельном юните и при попытке выполнить главный код
получаю ошибку :

[Error] ShutdownSystem.pas(38): Ambiguous overloaded call to "AdjustTokenPrivileges"
[Fatal Error] Unit1.pas(7): Could not compile used unit "shutdownsystem.pas"

Если код находится в теле основной программы ошибки нет !
как грабли эти обойти ?


function SystemOff(Method: TShutdownType) : Boolean;
label _exit;
var
hToken, ph: THandle;
pid, n: DWORD;
luid: TLargeInteger;
NewState: TTOKENPRIVILEGES;
PreviousState: PTokenPrivileges;
ver: TOSVERSIONINFO;
begin
ver.dwOSVersionInfoSize := SizeOf(ver);
GetVersionEx(ver);
if ver.dwPlatformId=VER_PLATFORM_WIN32_NT then
begin
pid := GetCurrentProcessId;
if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then
if LookupPrivilegeValue(nil, "SeShutdownPrivilege", luid) then
begin
NewState.PrivilegeCount := 1;
NewState.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
NewState.Privileges[0].Luid := luid;
PreviousState := nil;
AdjustTokenPrivileges(hToken, false, NewState, SizeOf(PreviousState), PreviousState^, n);
end;
Result := Execute(Method);
goto _exit;
end;
Result := Execute(Method);
_exit:
end;


 
Игорь Шевченко   (2002-11-19 18:01) [1]

Нда...ну и программист пошел нынче...


 
vic_774N   (2002-11-19 18:07) [2]

Ну так что здесь неоднозначно ?

AdjustTokenPrivileges(hToken, false, NewState, SizeOf(PreviousState), PreviousState^, n);



 
han_malign   (2002-11-19 18:11) [3]

из Windows.pas
function AdjustTokenPrivileges(TokenHandle: THandle; DisableAllPrivileges: BOOL;
const NewState: TTokenPrivileges; BufferLength: DWORD;
var PreviousState: TTokenPrivileges; var ReturnLength: DWORD): BOOL; stdcall; overload;
{$EXTERNALSYM AdjustTokenPrivileges}
function AdjustTokenPrivileges(TokenHandle: THandle; DisableAllPrivileges: BOOL;
const NewState: TTokenPrivileges; BufferLength: DWORD;
PreviousState: PTokenPrivileges; var ReturnLength: DWORD): BOOL; stdcall; overload;
{$EXTERNALSYM AdjustTokenPrivileges}

- отсуда и вылезает неоднозначность перезагрузки функция(хотя и не должна), попробуй убрать ^
З.Ы. Передавать в качестве приемного буфера неинициализированный указатель, да еще указывать вместо размера структуры, размер указателя - не очень хорошая идея. Если бы скомпилировалось, то была совсем другая ошибка и в Run time.


 
vic_774N   (2002-11-19 18:14) [4]

to han_malign

попробую поколдовать :)


 
vic_774N   (2002-11-19 18:40) [5]

В общем благодаря han_malign грабли я обошел :
проблема оказалась в подключаемых модулях и в моей невнимаельности : модуль Windows - отсутствовал был WinProcs и WinTypes которые впихнул по умолчанию генератор компонент, а я и не заметил. Торопыжка был голодный - проглотил утюг холодный ;)

Тема закрыта !



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.01.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.008 c
7-15320
Дмитрий К.К.
2002-10-25 15:58
2003.01.06
Добавить в избранное: Opera


7-15332
lakich
2002-10-28 15:28
2003.01.06
папка с Виндой


14-15226
Шишкин Илья
2002-12-14 22:11
2003.01.06
Нужна помощь


1-15135
@andrew
2002-12-23 17:11
2003.01.06
StrLCopy - замечательно работает со строками...


1-15011
Chupa-chups
2002-12-24 12:00
2003.01.06
MDIChild





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский