Ver Mensaje Individual
  #5  
Antiguo 06-10-2005
Aldo Aldo is offline
Miembro
 
Registrado: ene 2004
Posts: 46
Reputación: 0
Aldo Va por buen camino
Muchas gracias por tu tiempo. Pongo en este mensaje el código de mi función y explico donde falla y que error me dá.

Código Delphi [-]
 function ObtenerInfoServicios(Equipo : string; Tipos : TServiceTypes;
   IncluirInactivos : boolean; Lista : TObjectList):boolean;
 var
   hSCManager : SC_HANDLE;
   dwServiceType, dwServiceState: DWORD;
   pcbBytesNeeded, lpServicesReturned, lpResumeHandle: DWORD;
   Buffer : PArrayTEnumServiceStatus;
   i : integer;
   InfS : TInfoServicio;
 begin
   Lista.Clear;
   Result := False;
   // Abrimos service manager
   hSCManager := OpenSCManager(PChar(Equipo), nil, SC_MANAGER_ENUMERATE_SERVICE);
   if (hSCManager=0) then begin
     ChequeaError();
     Exit;
   end;
 
   lpResumeHandle := 0;
   New(Buffer);
   try
     dwServiceType:=SERVICE_WIN32;
     dwServiceState:=SERVICE_STATE_ALL;
 
     Result:=EnumServicesStatus( hSCManager, dwServiceType, dwServiceState, Buffer^[0],
       SizeOf(Buffer^), pcbBytesNeeded, lpServicesReturned, lpResumeHandle );
 
     // assume that our initial array was large enough to hold all
     // entries. add code to enumerate if necessary.
 
     // Procesar los servicios devueltos
     for i := 0 to lpServicesReturned-1 do begin
       InfS:=TInfoServicio.Create;
       InfS.ServiceName:=Buffer^.lpServiceName;
       InfS.DisplayName:=Buffer^[i].lpDisplayName;
       InfS.ServiceStatus:=Buffer^[i].ServiceStatus;
       Lista.Add(InfS);
     end;
 
   finally
     Result := true;
     Dispose(Buffer);
     CloseServiceHandle(hSCManager);
   end;
 end;
[i]
Falla en el llamado a EnumServicesStatus. El Código de error que dá es el 1783 y el mensaje de dicho error es El fragmento ha recibido datos incorrectos

Lo curioso es que en el resto de los S.O. no falla y funciona correctamente.

No sé si me puedes ayudar con esta información. Un Saludo Aldo

Última edición por dec fecha: 06-10-2005 a las 13:19:23. Razón: ¡¡Encerrad el código fuente entre las etiquetas [DELPHI] ... [/DELPHI]!!
Responder Con Cita