Compartir a través de


Función EnumDependentServicesA (winsvc.h)

Recupera el nombre y el estado de cada servicio que depende del servicio especificado; es decir, el servicio especificado debe ejecutarse para poder ejecutar los servicios dependientes.

Sintaxis

BOOL EnumDependentServicesA(
  [in]            SC_HANDLE              hService,
  [in]            DWORD                  dwServiceState,
  [out, optional] LPENUM_SERVICE_STATUSA lpServices,
  [in]            DWORD                  cbBufSize,
  [out]           LPDWORD                pcbBytesNeeded,
  [out]           LPDWORD                lpServicesReturned
);

Parámetros

[in] hService

Identificador del servicio. La función OpenService o CreateService devuelve este identificador y debe tener el derecho de acceso SERVICE_ENUMERATE_DEPENDENTS. Para obtener más información, consulte derechos de acceso y seguridad del servicio.

[in] dwServiceState

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

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_PENDINGy SERVICE_PAUSED.
SERVICE_INACTIVE
0x00000002
Enumera los servicios que están en estado de SERVICE_STOPPED.
SERVICE_STATE_ALL
0x00000003
Combina los siguientes estados: SERVICE_ACTIVE y SERVICE_INACTIVE.

[out, optional] lpServices

Puntero a una matriz de estructuras de ENUM_SERVICE_STATUS que recibe la información de nombre y estado del servicio para cada servicio dependiente 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 orden de los servicios de esta matriz es el inverso del orden de inicio de los servicios. En otras palabras, el primer servicio de la matriz es el que se iniciaría por última vez y el último servicio de la matriz es el que se iniciaría primero.

El tamaño máximo de esta matriz es de 64 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 pcbBytesNeededed recibirá el tamaño necesario.

[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 almacenar la matriz de entradas de servicio. La variable solo recibe este valor si el búfer al que apunta lpServices es demasiado pequeño, indicado por el error de función y el error de ERROR_MORE_DATA; De lo contrario, el contenido de pcbBytesNeededed no está definido.

[out] lpServicesReturned

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

Valor devuelto

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

Si se produce un error en la función, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

El administrador de control de servicios puede establecer los siguientes códigos de error. Otros códigos de error pueden establecerse 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 SERVICE_ENUMERATE_DEPENDENTS.
ERROR_INVALID_HANDLE
El identificador especificado no es válido.
ERROR_INVALID_PARAMETER
Un parámetro que se especificó no es válido.
ERROR_MORE_DATA
El búfer al que apunta lpServices no es lo suficientemente grande. La función establece la variable a la que apunta lpServicesReturned al número real de entradas de servicio almacenadas en el búfer. La función establece la variable a la que apunta pcbBytesNeeded en el número de bytes necesarios para almacenar todas las entradas del servicio.

Observaciones

Las entradas de los servicios devueltos se ordenan en el orden inverso del orden de inicio, con el orden de grupo en cuenta. Si necesita detener los servicios dependientes, puede usar el orden de las entradas escritas en el búfer de lpServices para detener los servicios dependientes en el orden adecuado.

Ejemplos

Para obtener un ejemplo, consulte Detener un servicio.

Nota

El encabezado winsvc.h define EnumDependentServices 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 Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows XP [solo aplicaciones de escritorio]
servidor mínimo admitido Windows Server 2003 [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
encabezado de winsvc.h (incluya Windows.h)
biblioteca de Advapi32.lib
DLL de Advapi32.dll

Consulte también

CreateService

ENUM_SERVICE_STATUS

EnumServicesStatusEx

OpenService

Funciones de servicio

de instalación, eliminación y enumeración del servicio