Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Registra una función para controlar las solicitudes de control de servicio.
Esta función se ha reemplazado por la función RegisterServiceCtrlHandlerEx. Un servicio puede usar cualquiera de las funciones, pero la nueva función admite datos de contexto definidos por el usuario y la nueva función de controlador admite códigos de control extendidos adicionales.
Sintaxis
SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerW(
[in] LPCWSTR lpServiceName,
[in] LPHANDLER_FUNCTION lpHandlerProc
);
Parámetros
[in] lpServiceName
Nombre del servicio ejecutado por el subproceso que realiza la llamada. Este es el nombre del servicio que especificó el programa de control de servicio en la función
Si el tipo de servicio es SERVICE_WIN32_OWN_PROCESS, la función no comprueba que el nombre especificado sea válido, ya que solo hay un servicio registrado en el proceso.
[in] lpHandlerProc
Puntero a la función de controlador que se va a registrar. Para obtener más información, vea Handler.
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto es un identificador de estado del servicio.
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.
| Código devuelto | Descripción |
|---|---|
|
No hay suficiente memoria disponible para convertir un parámetro de cadena ANSI en Unicode. Este error no se produce para los parámetros de cadena Unicode. |
|
La entrada del servicio se especificó incorrectamente cuando el proceso llamó a la función |
Observaciones
La función
Se debe llamar a la función
Cuando se invoca la función de controlador de control con una solicitud de control, el servicio debe llamar a SetServiceStatus para notificar el estado al administrador de control de servicio solo si el estado del servicio ha cambiado, como cuando el servicio está procesando los controles de detención o apagado. Si el estado del servicio no ha cambiado, el servicio no debe notificar el estado al administrador de control de servicios.
El identificador de estado del servicio no tiene que cerrarse.
Ejemplos
Para obtener un ejemplo, consulte Escritura de una función ServiceMain.
Nota
El encabezado winsvc.h define RegisterServiceCtrlHandler 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
de controlador de
función de controlador de control de servicio de