Вниз
Скачать: CL | DM;

Тип запуска службы   Найти похожие ветки 

← →
Дмитрий Ботвин   (2004-08-13 19:14) [0]

Люди, подскажите в чём ошибка. Есть функция, получающая
структуру типа:

  _QUERY_SERVICE_CONFIGA = record
   dwServiceType: DWORD;
   dwStartType: DWORD;
   dwErrorControl: DWORD;
   lpBinaryPathName: PAnsiChar;
   lpLoadOrderGroup: PAnsiChar;
   dwTagId: DWORD;
   lpDependencies: PAnsiChar;
   lpServiceStartName: PAnsiChar;
   lpDisplayName: PAnsiChar;
 end;

из неё я хочу узнать тип запуска службы. При вызове функции
QueryServiceConfig выдается ошибка. Вот кусок кода:

function GetServiceConfig(ServiceName: String): DWORD;
  var
    SCManager, Service: SC_HANDLE;
    BytesNeeded: DWORD;
    buf: PQueryServiceConfig;
  begin
    buf:=nil;
    TypeStart:=0;
    SCManager := OpenSCManager(PChar(Form1.CompName.Text), nil, GENERIC_READ);
    if SCManager <> 0 then
    try
      Service := OpenService(SCManager, PChar(ServiceName), SERVICE_QUERY_CONFIG);
      if Service <> 0 then
        try
          begin
            QueryServiceConfig(Service, buf, 4096, BytesNeeded);
            if buf<>nil then
              begin
                Result:=buf^.dwStartType;
              end;
          end;
        finally
          CloseServiceHandle(Service);
        end;
      else Result:=0;
     finally
        CloseServiceHandle(SCManager);
     end
    else Result:=0;
  end;


← →
VMcL ©   (2004-08-14 01:52) [1]

Память Пушкин будет выделять?

1. Вызываешь QueryServiceConfig(Service, nil, 0, BytesNeeded); Таким образом узнаешь, скока функция хочет памяти.
2. GetMem(buf, BytesNeeded); или buf := AllocMem(BytesNeeded);
3. Потом QueryServiceConfig(Service, buf, BytesNeeded, BytesNeeded);
4. FreeMem(buf);


← →
Дмитрий Ботвин   (2004-08-14 09:19) [2]

Спасибо, VMcL!!! Тупанул немного, забыл про выделение памяти.



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.029 c
6-1092729114
Nata
2004-08-17 11:51
2004.10.24
Служба


1-1097341596
Alexey_v
2004-10-09 21:06
2004.10.24
расположить приложение на рабочем столе между папками и обоями


1-1097061914
Russel
2004-10-06 15:25
2004.10.24
Установка старого компонента


9-1087530602
VolanD
2004-06-18 07:50
2004.10.24
Вращение точки


3-1096264060
V-A-V
2004-09-27 09:47
2004.10.24
Не проходят несколько Left Join - ов




   Наверх