Ejemplo de servicio completo

Los temas de esta sección forman un ejemplo de servicio completo:

Compilar el servicio

En el procedimiento siguiente se describe cómo compilar el servicio y registrar el archivo DLL del mensaje de evento.

Para compilar el servicio y registrar el archivo DLL del mensaje de evento

  1. Compile el archivo DLL del mensaje desde Sample.mc mediante los pasos siguientes:

    1. mc -U sample.mc
    2. rc -r sample.rc
    3. link -dll -noentry -out:sample.dll sample.res
  2. Compile Svc.exe, SvcConfig.exe y SvcControl.exe desde Svc.cpp, SvcConfig.cpp y SvcControl.cpp, respectivamente.

  3. Cree la clave del Registro HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\SvcName y agregue los siguientes valores del Registro a esta clave.

    Valor Tipo Descripción
    EventMessageFile = dll_path REG_SZ Ruta de acceso al archivo DLL de solo recursos que contiene cadenas que el servicio puede escribir en el registro de eventos.
    TypesSupported = 0x00000007 REG_DWORD Máscara de bits que especifica los tipos de eventos admitidos. El valor 0x000000007 indica que se admiten todos los tipos.

     

Probar el servicio

En el procedimiento siguiente se describe cómo probar el servicio.

Para probar el servicio

  1. En Panel de control, inicie la aplicación Servicios. (En los pasos siguientes, use la tecla F5 para actualizar la pantalla después de ejecutar un comando que modifique la información de la aplicación Servicios ).

  2. Ejecute el siguiente comando para instalar el servicio:

    instalación de svc

    El servicio escribe "Servicio instalado correctamente" en la consola si la operación se realiza correctamente o un mensaje de error en caso contrario.

    Si la instalación del servicio se realiza correctamente, el servicio se muestra en la aplicación Servicios . Tenga en cuenta que Name está establecido en "SvcName", Description y Status están en blanco y El tipo de inicio está establecido en "Manual".

  3. Ejecute el siguiente comando para iniciar el servicio:

    svccontrol start SvcName

    Si la operación se realiza correctamente, el programa de control de servicio escribe "Inicio del servicio pendiente..." y, a continuación, "El servicio se inició correctamente" en la consola. De lo contrario, el programa escribe un mensaje de error en la consola.

    Si el servicio se inicia correctamente, Status se establece en "Started". El SCM ejecuta el código de la función ServiceMain . Si se produce un error, el servicio escribirá un mensaje de error en el registro de eventos. Este mensaje incluye el nombre de la función que produjo un error y el código de error que se devolvió en caso de error.

  4. Ejecute el siguiente comando para actualizar la descripción del servicio:

    svcconfig describe SvcName

    El programa de configuración del servicio escribe "Descripción del servicio actualizada correctamente" en la consola si la operación se realiza correctamente o un mensaje de error de lo contrario.

    Si la actualización se realiza correctamente, Description se establece en "Esta es una descripción de prueba".

  5. Ejecute el siguiente comando para consultar la configuración del servicio:

    consulta svcconfig SvcName

    El programa de configuración del servicio escribe la información de configuración del servicio en la consola si la operación se realiza correctamente o un mensaje de error en caso contrario.

  6. Ejecute el siguiente comando para cambiar la DACL del servicio:

    svccontrol dacl SvcName

    El programa de configuración del servicio escribe "DaCL de servicio actualizado correctamente" en la consola si la operación se realiza correctamente o un mensaje de error de lo contrario.

  7. Ejecute el siguiente comando para deshabilitar el servicio:

    svcconfig disable SvcName

    El programa de configuración del servicio escribe "Servicio deshabilitado correctamente" en la consola si la operación se realiza correctamente o un mensaje de error en caso contrario.

    Si el servicio está deshabilitado correctamente, el tipo de inicio se establece en "Disabled".

  8. Ejecute el siguiente comando para habilitar el servicio:

    svcconfig enable SvcName

    El programa de configuración del servicio escribe "Servicio habilitado correctamente" en la consola si la operación se realiza correctamente o un mensaje de error de lo contrario.

    Si el servicio está habilitado correctamente, el tipo de inicio se establece en "Manual".

  9. Ejecute el siguiente comando para detener el servicio:

    svccontrol stop SvcName

    Si la operación se realiza correctamente, el programa de control de servicio escribe "Service stop pending..." y, a continuación, "El servicio se detuvo correctamente" en la consola. De lo contrario, el programa escribe un mensaje de error en la consola.

    Si el servicio se detiene correctamente, Status está en blanco.

    Si el servicio no se detiene, el programa de control de servicio escribe un mensaje de error en el registro de eventos que incluye el nombre de la función que produjo un error y el código de error que se devolvió en caso de error.

  10. Ejecute el siguiente comando para eliminar el servicio:

    svcconfig delete SvcName

    El programa de configuración del servicio escribe "Servicio eliminado correctamente" en la consola si la operación se realiza correctamente o un mensaje de error en caso contrario.

    Si el servicio se elimina correctamente, ya no se muestra en la aplicación Servicios . (Tenga en cuenta que si intenta eliminar un servicio que no está detenido, la operación se realiza correctamente, pero el tipo de inicio se establece en "Deshabilitado" y la entrada del servicio se eliminará al reiniciar el sistema o cuando el servicio finalice mediante el Administrador de tareas).

Uso de servicios