Función OpenServiceA (winsvc.h)
Abre un servicio existente.
Sintaxis
SC_HANDLE OpenServiceA(
[in] SC_HANDLE hSCManager,
[in] LPCSTR lpServiceName,
[in] DWORD dwDesiredAccess
);
Parámetros
[in] hSCManager
Identificador de la base de datos del administrador de control de servicios. La función OpenSCManager devuelve este identificador. Para obtener más información, consulte Derechos de acceso y seguridad del servicio.
[in] lpServiceName
Nombre del servicio que se va a abrir. Este es el nombre especificado por el parámetro lpServiceName de la función CreateService cuando se creó el objeto de servicio, no el nombre para mostrar del servicio que muestran las aplicaciones de interfaz de usuario para identificar el servicio.
La longitud máxima de la cadena es de 256 caracteres. La base de datos del Administrador de control de servicios conserva las mayúsculas y minúsculas de los caracteres, pero las comparaciones de nombres de servicio siempre distinguen mayúsculas de minúsculas. La barra diagonal (/) y la barra diagonal inversa (\) no son caracteres de nombre de servicio no válidos.
[in] dwDesiredAccess
Acceso al servicio. Para obtener una lista de los derechos de acceso, consulte Derechos de acceso y seguridad del servicio.
Antes de conceder el acceso solicitado, el sistema comprueba el token de acceso del proceso de llamada en la lista de control de acceso discrecional del descriptor de seguridad asociado al objeto de servicio.
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto es un identificador para el servicio.
Si la función no se realiza correctamente, el valor devuelto es NULL. Para obtener información de error extendida, llame a GetLastError.
El administrador de control de servicios puede establecer los siguientes códigos de error. Otras pueden establecerse mediante las funciones del Registro a las que llama el administrador de control de servicios.
Código devuelto | Descripción |
---|---|
|
El identificador no tiene acceso al servicio. |
|
El identificador especificado no es válido. |
|
El nombre de servicio especificado no es válido. |
|
El servicio especificado no existe. |
Comentarios
El identificador devuelto solo es válido para el proceso que llamó a OpenService. Se puede cerrar llamando a la función CloseServiceHandle .
Para usar OpenService, no se requieren privilegios aparte de SC_MANAGER_CONNECT.
Ejemplos
Para obtener un ejemplo, consulte Inicio de un servicio.
Nota
El encabezado winsvc.h define OpenService 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
Requisito | Value |
---|---|
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 |