Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: Как поправить ?  (Прочитано 37483 раз)
0 Пользователей и 1 Гость смотрят эту тему.
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #30 : 25-08-2004 11:15 » 

MOPO3, ты теряешь код ошибки после вызова

Код:
 ControlService(hSrv,SERVICE_CONTROL_STOP,&ss);

тебе надо перед вызовом ControlService сохранить код ошибки в отдельной переменной и сообщать именно его, а не то, что выдасть GetLastError после вызова ControlService
« Последнее редактирование: 30-11-2007 23:11 от Алексей1153++ » Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
Pu
Большой босс

ru
Offline Offline
78


« Ответ #31 : 25-08-2004 11:23 » 

MOPO3, чтой то мне кажется что у тебя сервиз находится в состоянии  SERVICE_START_PENDING а ты уже начинаешь его узать . После стартсервиз проверь его состояние. к бабке не ходи. посему и еггог дает - ERROR_IO_PENDING
Записан

Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
SOS
Гость
« Ответ #32 : 25-08-2004 17:16 » 

Я тут по поводу GOTO - ох и не люблю я это Жаль
Я использую вот такую  do{ }while( 0 ) конструкцию:

Код:
int foo()
{
int status = 0;
CString s;


do
{
GetCurrentDirectory(MAX_PATH,s.GetBuffer(MAX_PATH));
s.ReleaseBuffer();

if (s.Right(1)!=_T("\\"))
s+=_T("\\");

s+=_T("blablabla.sys");
AfxMessageBox(s, MB_OK);

SC_HANDLE hSrv;
hSrv=CreateService(sc,_T("BlaBlaBla"),_T("BlaBlaBla"),
SERVICE_ALL_ACCESS | GENERIC_EXECUTE | SERVICE_START | SERVICE_STOP,
SERVICE_KERNEL_DRIVER,
SERVICE_DEMAND_START,
SERVICE_ERROR_IGNORE,
s, NULL, NULL, NULL, NULL, NULL);

CloseServiceHandle(sc);

if (!hSrv)
{
AfxMessageBox(_T("Unexpected error. Cannot create service"),MB_OK);
!! status = 1;
!! break; //return;
}

if (!StartService(hSrv,0,NULL))
{
!! //qq:
      AfxMessageBox(_T("Cannot start device. blablabla.sys maybe not found"),MB_OK);
!! //DeleteService(hSrv);
!! //CloseServiceHandle(hSrv);
!! status = 2;
!! break; //return;
}

hDevice=CreateFile(_T("\\\\.\\BlaBlaBla"),
GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE,
FILE_SHARE_WRITE | FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
NULL);

if (hDevice==INVALID_HANDLE_VALUE)
{
SERVICE_STATUS ss;
ControlService(hSrv,SERVICE_CONTROL_STOP,&ss);
!! status = 3;
!! break; //return;
}

}while( 0 );


if( status )
{
if( hSrv )
{
DeleteService(hSrv);
CloseServiceHandle(hSrv);
}
}

return status;
}


И четабильней, и GOTO нет, и Errors проще хэндлить
« Последнее редактирование: 01-12-2007 10:26 от RXL » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #33 : 25-08-2004 17:59 » 

SOS, можно ещё

for(; ; ){...;}

или

while(true){....;}


выход из них -
break;
Записан

MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #34 : 26-08-2004 04:50 » 

npak, поставил проверку перед
Код:
ControlService(hSrv,SERVICE_CONTROL_STOP,&ss);
и получил код ошибки 2 :
Код:
The system cannot find the file specified. 
странно, потому что файл то есть 100%  :l_smile:
« Последнее редактирование: 01-12-2007 13:29 от Алексей1153++ » Записан

MCP, MCAD, MCTS:Win, MCTS:Web
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #35 : 26-08-2004 05:22 » 

Поставил проверку в 4 местах. Получаю в таком порядке :
сразу после OpenSCManager : 997
сразу после CreateService : 997
сразу перед ControlService : 2
сразу после StartService : 997
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #36 : 26-08-2004 08:21 » 

Ну мля, вот это прикол!
Я запускал сразу после компиляции из студии нажатием на восклицательный знак, и не работало. Но когда я зашол в каталог релиз и запустил экзэшник вручную, всё ЗАПАХАЛО !!!
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Pu
Большой босс

ru
Offline Offline
78


« Ответ #37 : 26-08-2004 08:39 » 

MOPO3, проздравляю.  Ага
Записан

Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать.
(с) Артур Джонс
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #38 : 26-08-2004 08:57 » 

Pu, спасибо конешно, вот только мне бы ещё понять почему так было Улыбаюсь
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Serega
Гость
« Ответ #39 : 26-08-2004 08:57 » 

Цитата: MOPO3
Код:
CString s;
GetCurrentDirectory(MAX_PATH,s.GetBuffer(MAX_PATH));
s.ReleaseBuffer();
if( s.Right(1) != _T("\\") )
{
s+=_T("\\");
}
s+=_T("blablabla.sys");
Ну мля, вот это прикол!
Я запускал сразу после компиляции из студии нажатием на восклицательный знак, и не работало. Но когда я зашол в каталог релиз и запустил экзэшник вручную, всё ЗАПАХАЛО !!!
Когда запускаешь из студии, текущей директорией будет папка, где находится файл проекта, а не debug или release
« Последнее редактирование: 01-12-2007 13:30 от Алексей1153++ » Записан
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #40 : 26-08-2004 08:59 » 

Serega, кидал я и в неё нужный файл Улыбаюсь И всё равно байда та же была Жаль
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #41 : 26-08-2004 09:00 » 

Ну главное что проблема решена Улыбаюсь Остальные тупые вопросы буду задавать уже в отдельной теме Улыбаюсь
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #42 : 26-08-2004 09:30 » new

MOPO3, в настройках проекта, в закладке Debug выставь опцию 'Working directory'
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines