Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2007, 08:09   #1
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию Сервисы, блин....

В общем у меня с этим проблемы.
Код:
BufSize := 0;
lpBuffer := nil;
QueryServiceConfig2(hService, SERVICE_CONFIG_DESCRIPTION, lpBuffer,
BufSize, BytesNeeded);

BufSize := BytesNeeded;
GetMem(lpBuffer, 1024);
QueryServiceConfig2(hService, SERVICE_CONFIG_DESCRIPTION, lpBuffer,
BufSize, BytesNeeded);
Move(lpBuffer^,Description,BufSize);
Проблемы начинаются тогда, когда вызываешь GetMem(lpBuffer, BytesNeed). Срабатывает только при BytesNeeded = 1024. Хотя в MSDN сказано, что после превого вызова с нулевыми буфером и его размером вернется в BytesNeeded размер, необходимый для буфера.
Ладно, это обошел (хотя до конца не понял ошибка ли это в MSDN, мой глюк или компилятора).

Сейчас пытаюсь повторить все это как
QueryServiceConfig2(hService,SERVIC E_CONFIG_FAILURE_ACTIONS,
lpBuffer,BufSize, BytesNeeded);

т.е. изменился 2-ой параметр. Манипуляции с размером буфера не помогают...
Я не расписываю все подробно, т.к. люди с этим сталкивавшиеся меня поймут. А те кто не сталкивался вряд ли полезут в MSDN.. Извините, если ошибаюсь.

Последний раз редактировалось Баламут; 25.12.2007 в 08:27.
Баламут вне форума Ответить с цитированием
Старый 25.12.2007, 10:22   #2
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Сам когда был на винде, любил поВинАпить. Этот топик не смог обойти. А чего вы хотите добиться? А МСДН-ссылочку таки покажите
SkyM@n вне форума Ответить с цитированием
Старый 25.12.2007, 13:54   #3
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

MSDN у меня с диска ][akeр. Хотя до этого использовал от 2000-го года. Сейчас пока не найду. Только утром, на работе закладки есть.

Последний раз редактировалось Баламут; 25.12.2007 в 13:56.
Баламут вне форума Ответить с цитированием
Старый 25.12.2007, 19:44   #4
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

попробуй вместо
GetMem(lpBuffer, 1024);

поставить
lp:= HeapAlloc(GetProcessHeap,0,BufSize) ;
(хотя в принципе разницы нет....)

здесь есть пример получения информации о сервисе на С++. Посмотри. Что непонятно, отпишись.

Последний раз редактировалось rpy3uH; 25.12.2007 в 19:55.
rpy3uH вне форума Ответить с цитированием
Старый 26.12.2007, 01:29   #5
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Видел я этот пример. У меня все тоже самое. Проблем с пониманием сишных исходников у меня вроде нет (достаточно в свое время пописал на С++). Осталось только скомпилить его на родном, так сказать, языке и посмотреть на результат. Или действительно побаловаться с выделением памяти. Может дело в аттрибуте (перемещаемая и т.д.). Буду пробовать. О результатах отпишусь

Последний раз редактировалось Баламут; 26.12.2007 в 01:32.
Баламут вне форума Ответить с цитированием
Старый 28.12.2007, 01:06   #6
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

В общем решил проблему. Дело как всегда оказалось в собственной невнимательности... Передал в функцию указатель, а она хочет var-параметр... Можете в меня плюнуть...
Баламут вне форума Ответить с цитированием
Старый 28.12.2007, 01:30   #7
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Да бывает =)
SkyM@n вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
МОНИТОР, БЛИН- издаёт писк+скрежет Viteef Компьютерное железо 26 10.02.2010 20:48
про сервисы и формы darkcoder Общие вопросы Delphi 1 11.03.2008 07:28
И снова сервисы Баламут Win Api 3 13.12.2007 01:26
Opera блин Elm0 Свободное общение 9 21.06.2007 20:44
Блин,пацаны помогите,нужна помощь,попал в тяжёлую ситуацию!!! steck Свободное общение 4 26.05.2007 08:28