Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Win API


Информационный Канал Subscribe.Ru


RusFAQ.ru: Win API

Выпуск № 069
от 15.05.2004, 23:00

Администратор:
Имя: Калашников О. А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 176
Отправлено ответов: 280
Активность: 159.0 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Foamplast
Статус: Профессиональный
Общий рейтинг: 149.88
URL: мой личный сайт
[Подробней >>]
chebv
Статус: Опытный
Общий рейтинг: 110.29
URL: Chebv
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 172. Доброго времени суток ! помогите с ReadFileEx - измучился я уже. код в приложении, GetLastError ошиб... (ответов: 1)
Вопрос № 173. Здрастуйте уважаемые эксперты.... Если модите помогите коллеге (правда в другой области программиров... (ответов: 3)

Вопросов: 2, ответов: 4


 Вопрос № 172

Доброго времени суток !
помогите с ReadFileEx - измучился я уже. код в приложении, GetLastError ошибки не дает, просто "функция обратного вызова" не вызывается :( примеров в инете я не нашел - только упоминание, что асинхронные операции с файлами можно сделать так. По идее - это тоже, что и ReadFile, но с указанием функции, которая будет вызываться, однако ничерта не работает и ошибки не дает :((
заранее спасибо


Приложение:


Вопрос отправлен: 09.05.2004, 15:15
Отправитель: vova

[Следующий вопрос >>] [Список вопросов]

Отвечает Foamplast

Доброе время суток, vova!

Здесь дело в том, что функция, указанная в последнем параметре вызова ReadFileEx() (в данном случае это Callback_ReadFile()), вызывается тогда, когда ввод завершён и вызвавший поток находится в состоянии ожидания сигнала. Это сделано с той целью, чтобы не прерывать поток, если он занят работой. То есть, чтобы всё заработало, необходимо вызвать ReadFileEx(), а затем когда-нибудь сообщить системе: "мне нефига делать и я жду всяких там событий, могу и ввод из файла обработать". Это делают функции SleepEx(), MsgWaitForMultipleObjectsEx(), WaitForSingleObjectEx(), WaitForMultipleObjectsEx(). Для проверки данного факта я написал небольшую программу, где всё это показано. Программа написана на ассемблере (я на др. не умею), при этом логика работы будет вполне понятна.




Приложение:

Ответ отправлен: 13.05.2004, 08:49
Отправитель: Foamplast


 Вопрос № 173

Здрастуйте уважаемые эксперты....
Если модите помогите коллеге (правда в другой области программирования)!!! Мне нужны Api-функции для выключения и перезагрузки компа в Windows 2000(Xp)!
Заранее благодарен!



Вопрос отправлен: 11.05.2004, 22:57
Отправитель: Acid Burn

[Следующий вопрос >>] [Список вопросов]

Отвечает Foamplast

Приветствую Вас, Acid Burn!
Ха-ха-ха, ха-ха, ха-ха-ха, ха-ха, ха...
ExitWindowsEx()


Ответ отправлен: 13.05.2004, 08:56
Отправитель: Foamplast


Отвечает chebv

Здравствуйте, Acid Burn!
Используй функцию
BOOL ExitWindowsEx(
UINT uFlags, // shutdown operation
DWORD dwReason // shutdown reason
);
В частности, uFlags может принимать значения EWX_SHUTDOWN, EWX_REBOOT.
Для того, чтобы перезагрузить/выключить компьютер в Windows 2000(Xp)нужно иметь соответствующие права. (См. приложение)

Приложение:

Ответ отправлен: 12.05.2004, 10:28
Отправитель: chebv


Отвечает --- Нет данных ---

Здравствуйте, Acid Burn!
Функция выключает компьютер. Если надо его перегрузить, то смотри параметры ExitWindowsEx()
BOOL WINAPI SystemShutdown(VOID){
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
if(!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
return( FALSE );
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
if(GetLastError() != ERROR_SUCCESS)
return FALSE;
if(!ExitWindowsEx(EWX_REBOOT | EWX_FORCE, 0))
return FALSE;
return TRUE;
}

Ответ отправлен: 12.05.2004, 09:16
Отправитель: --- Нет данных ---



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (25)
C / C++ (14)
Perl (4)
Builder / Delphi (19)
Pascal (20)
Basic / VBA (4)
Java / JavaScript (4)
PHP (12)
Криптография (8)
WinAPI (10)
Радиоэлектроника (5)
Пользователю
Windows 95/98/Me (36)
Windows NT/2000/XP (52)
"Железо" (28)
Поиск информации (15)
Администратору
Windows NT/2000/XP (27)
Linux / Unix (9)
Юристу
Гражданское право (10)
Семейное право (7)
Трудовое право (9)
КоАП (6)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу


В избранное