Función EnumServicesStatusExA (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, junto con datos adicionales basados en el nivel de información especificado.
Sintaxis
BOOL EnumServicesStatusExA(
[in] SC_HANDLE hSCManager,
[in] SC_ENUM_TYPE InfoLevel,
[in] DWORD dwServiceType,
[in] DWORD dwServiceState,
[out, optional] LPBYTE lpServices,
[in] DWORD cbBufSize,
[out] LPDWORD pcbBytesNeeded,
[out] LPDWORD lpServicesReturned,
[in, out, optional] LPDWORD lpResumeHandle,
[in, optional] LPCSTR pszGroupName
);
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 del servicio.
[in] InfoLevel
Atributos de servicio que se van a devolver. Use SC_ENUM_PROCESS_INFO para recuperar la información de nombre y estado del servicio para cada servicio de la base de datos. El parámetro lpServices es un puntero a un búfer que recibe una matriz de estructuras de ENUM_SERVICE_STATUS_PROCESS . El búfer debe ser lo suficientemente grande como para contener las estructuras, así como las cadenas a las que apuntan sus miembros.
Actualmente, no se definen otros niveles de información.
[in] dwServiceType
Tipo de servicios que se van a enumerar. Este parámetro puede ser uno o más de los siguientes valores.
Value | Significado |
---|---|
|
Servicios de tipo SERVICE_KERNEL_DRIVER y SERVICE_FILE_SYSTEM_DRIVER. |
|
Servicios de controlador del sistema de archivos. |
|
Servicios de controladores. |
|
Servicios de tipo SERVICE_WIN32_OWN_PROCESS y SERVICE_WIN32_SHARE_PROCESS. |
|
Servicios que se ejecutan en sus propios procesos. |
|
Servicios que comparten un proceso con uno o varios otros 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.
[out, optional] lpServices
Puntero al búfer que recibe la información de estado. El formato de estos datos depende del valor del parámetro InfoLevel .
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_MORE_DATA. 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 ha aumentado 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 la función EnumServicesStatusEx . 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 indica la siguiente entrada de servicio que se va a leer cuando se llama a la función EnumServicesStatusEx para recuperar los datos adicionales.
[in, optional] pszGroupName
Nombre del grupo de pedidos de carga. Si este parámetro es una cadena, los únicos servicios enumerados son los que pertenecen al grupo que tiene el nombre especificado por la cadena. Si este parámetro es una cadena vacía, solo se enumeran los servicios que no pertenecen a ningún grupo. Si este parámetro es NULL, se omite la pertenencia a grupos y se enumeran todos los servicios.
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. Se pueden devolver los errores siguientes.
Código devuelto | Descripción |
---|---|
|
El identificador no tiene el derecho de acceso SC_MANAGER_ENUMERATE_SERVICE . |
|
El búfer es demasiado pequeño. No se pueden devolver todos los datos de la base de datos activa. El parámetro pcbBytesNeeded contiene el número de bytes necesarios para recibir las entradas restantes. |
|
Se usó un valor de parámetro no válido. |
|
El identificador no es válido. |
|
El parámetro InfoLevel contiene un valor no admitido. |
|
El sistema está apagando; No se puede llamar a esta función. |
Comentarios
Si el autor de la llamada no tiene el derecho de acceso SERVICE_QUERY_STATUS a un servicio, el servicio se omite silenciosamente de la lista de servicios devueltos al cliente.
Nota
El encabezado winsvc.h define EnumServicesStatusEx 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 neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o 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 |