Compartir a través de


Función EnumServicesStatusA (winsvc.h)

Enumera los servicios de la base de datos del administrador de control de servicios especificada. Se proporciona el nombre y el estado de cada servicio.

Esta función se ha reemplazado por la función EnumServicesStatusEx . Devuelve la misma información QueumServicesStatus , además del identificador de proceso y la información adicional para el servicio. Además, EnumServicesStatusEx permite enumerar los servicios que pertenecen a un grupo especificado.

Sintaxis

BOOL EnumServicesStatusA(
  [in]                SC_HANDLE              hSCManager,
  [in]                DWORD                  dwServiceType,
  [in]                DWORD                  dwServiceState,
  [out, optional]     LPENUM_SERVICE_STATUSA lpServices,
  [in]                DWORD                  cbBufSize,
  [out]               LPDWORD                pcbBytesNeeded,
  [out]               LPDWORD                lpServicesReturned,
  [in, out, optional] LPDWORD                lpResumeHandle
);

Parámetros

[in] hSCManager

Identificador de la base de datos del administrador de control de servicios. La función OpenSCManager devuelve este identificador y debe tener el derecho de acceso SC_MANAGER_ENUMERATE_SERVICE. Para obtener más información, consulte Derechos de acceso y seguridad de servicio.

[in] dwServiceType

Tipo de servicios que se van a enumerar. Este parámetro puede ser uno o más de los siguientes valores.

Valor Significado
SERVICE_DRIVER
0x0000000B
Servicios de tipo SERVICE_KERNEL_DRIVER y SERVICE_FILE_SYSTEM_DRIVER.
SERVICE_FILE_SYSTEM_DRIVER
0x00000002
Servicios de controladores del sistema de archivos.
SERVICE_KERNEL_DRIVER
0x00000001
Servicios de controlador.
SERVICE_WIN32
0x00000030
Servicios de tipo SERVICE_WIN32_OWN_PROCESS y SERVICE_WIN32_SHARE_PROCESS.
SERVICE_WIN32_OWN_PROCESS
0x00000010
Servicios que se ejecutan en sus propios procesos.
SERVICE_WIN32_SHARE_PROCESS
0x00000020
Servicios que comparten un proceso con uno o varios servicios. Para obtener más información, vea Programas de servicio.

[in] dwServiceState

Estado de los servicios que se van a enumerar. Este parámetro puede ser uno de los valores siguientes.

Valor Significado
SERVICE_ACTIVE
0x00000001
Enumera los servicios que se encuentran en los siguientes estados: SERVICE_START_PENDING, SERVICE_STOP_PENDING, SERVICE_RUNNING, SERVICE_CONTINUE_PENDING, SERVICE_PAUSE_PENDING y SERVICE_PAUSED.
SERVICE_INACTIVE
0x00000002
Enumera los servicios que están en estado SERVICE_STOPPED.
SERVICE_STATE_ALL
0x00000003
Combina los siguientes estados: SERVICE_ACTIVE y SERVICE_INACTIVE.

[out, optional] lpServices

Puntero a un búfer que contiene una matriz de estructuras de ENUM_SERVICE_STATUS que reciben la información de estado del nombre y del servicio para cada servicio de la base de datos. El búfer debe ser lo suficientemente grande como para contener las estructuras, además de las cadenas a las que apuntan sus miembros.

El tamaño máximo de esta matriz es de 256 000 bytes. Para determinar el tamaño necesario, especifique NULL para este parámetro y 0 para el parámetro cbBufSize . Se producirá un error en la función y GetLastError devolverá ERROR_INSUFFICIENT_BUFFER. El parámetro pcbBytesNeeded recibirá el tamaño necesario.

Windows Server 2003 y Windows XP: El tamaño máximo de esta matriz es de 64 000 bytes. Este límite se incrementó a partir de Windows Server 2003 con SP1 y Windows XP con SP2.

[in] cbBufSize

Tamaño del búfer al que apunta el parámetro lpServices , en bytes.

[out] pcbBytesNeeded

Puntero a una variable que recibe el número de bytes necesarios para devolver las entradas de servicio restantes, si el búfer es demasiado pequeño.

[out] lpServicesReturned

Puntero a una variable que recibe el número de entradas de servicio devueltas.

[in, out, optional] lpResumeHandle

Puntero a una variable que, en la entrada, especifica el punto inicial de la enumeración. Debe establecer este valor en cero la primera vez que se llama a esta función. En la salida, este valor es cero si la función se realiza correctamente. Sin embargo, si la función devuelve cero y la función GetLastError devuelve ERROR_MORE_DATA, este valor se usa para indicar la siguiente entrada de servicio que se va a leer cuando se llama a la función para recuperar los datos adicionales.

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es distinto de cero.

Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

El administrador de controles de servicio puede establecer los siguientes códigos de error. Otros códigos de error se pueden establecer mediante las funciones del Registro a las que llama el administrador de control de servicios.

Código devuelto Descripción
ERROR_ACCESS_DENIED
El identificador no tiene derecho de acceso SC_MANAGER_ENUMERATE_SERVICE.
ERROR_INVALID_HANDLE
El identificador especificado no es válido.
ERROR_INVALID_PARAMETER
Un parámetro especificado no es válido.
ERROR_MORE_DATA
Hay más entradas de servicio de las que caben en el búfer lpServices . El número real de entradas de servicio escritas en lpServices se devuelve en el parámetro lpServicesReturned . El número de bytes necesarios para obtener las entradas restantes se devuelve en el parámetro pcbBytesNeeded . Los servicios restantes se pueden enumerar mediante llamadas adicionales a EnumServicesStatus con el parámetro lpResumeHandle que indica el siguiente servicio que se va a leer.

Comentarios

Nota

El encabezado winsvc.h define EnumServicesStatus como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

   
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winsvc.h (incluye Windows.h)
Library Advapi32.lib
Archivo DLL Advapi32.dll

Consulte también

ENUM_SERVICE_STATUS

EnumDependentServices

EnumServicesStatusEx

OpenSCManager

Funciones de servicio

Instalación, eliminación y enumeración del servicio