Compartir a través de


Función SubscribeServiceChangeNotifications

Se suscribe a las notificaciones de cambio de estado del servicio mediante una función de devolución de llamada.

Sintaxis

DWORD WINAPI SubscribeServiceChangeNotifications(
  _In_     SC_HANDLE                     hService,
  _In_     SC_EVENT_TYPE                 eEventType,
  _In_     PSC_NOTIFICATION_CALLBACK     pCallback,
  _In_opt_ PVOID                         pCallbackContext,
  _Out_    PSC_NOTIFICATION_REGISTRATION *pSubscription
);

Parámetros

hService [in]

Identificador del servicio o identificador del administrador de control de servicios (SCM) para supervisar los cambios.

Los identificadores de los servicios los devuelve la función OpenService y CreateService y deben tener el derecho de acceso SERVICE_QUERY_STATUS. La función OpenSCManager devuelve identificadores al administrador de controles de servicio y debe tener el derecho de acceso SC_MANAGER_ENUMERATE_SERVICE .

eEventType [in]

Especifica el tipo de cambios de estado que se deben notificar. Este parámetro se establece en uno de los valores especificados en SC_EVENT_TYPE. El comportamiento de esta función es diferente en función del tipo de evento como se indica a continuación.

Valor Significado
SC_EVENT_DATABASE_CHANGE
0
Se ha agregado o eliminado un servicio. El parámetro hService debe ser un identificador para el SCM.
SC_EVENT_PROPERTY_CHANGE
1
Se han actualizado una o varias propiedades de servicio. El parámetro hService debe ser un identificador para el servicio.
SC_EVENT_STATUS_CHANGE
2
El estado de un servicio ha cambiado. El parámetro hService debe ser un identificador para el servicio.

pCallback [in]

Especifica la función de devolución de llamada. La devolución de llamada debe definirse como tener un tipo de SC_NOTIFICATION_CALLBACK. Para obtener más información, vea la sección Comentarios.

pCallbackContext [in, opcional]

Puntero que representa el contexto de esta devolución de llamada de notificación.

pSubscription [out]

Devuelve un puntero a la suscripción resultante del registro de devolución de llamada de notificación. El autor de la llamada es responsable de llamar a UnsubscribeServiceChangeNotifications para dejar de recibir notificaciones.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto se ERROR_SUCCESS.

Si se produce un error en la función, el valor devuelto es uno de los códigos de error del sistema.

Observaciones

La función de devolución de llamada se declara de la siguiente manera:

typedef VOID CALLBACK SC_NOTIFICATION_CALLBACK(
    _In_    DWORD                   dwNotify,
    _In_    PVOID                   pCallbackContext
);
typedef SC_NOTIFICATION_CALLBACK* PSC_NOTIFICATION_CALLBACK;

La función de devolución de llamada recibe un puntero al contexto proporcionado por el autor de la llamada. La devolución de llamada se invoca como resultado del evento de cambio de estado del servicio. Cuando se invoca la devolución de llamada, se proporciona con una máscara de bits de SERVICE_NOTIFY_XXX valores que indican el tipo de cambio de estado del servicio. Cuando la devolución de llamada se proporciona con cero en lugar de un valor SERVICE_NOTIFY_XXX válido, la aplicación debe comprobar lo que se cambió.

La función de devolución de llamada no debe bloquear la ejecución. Si espera que la ejecución de la función de devolución de llamada tarde tiempo, descargue el trabajo que realiza en la función de devolución de llamada en un subproceso independiente mediante la puesta en cola de un elemento de trabajo en un subproceso de un grupo de subprocesos. Algunos tipos de trabajo que pueden hacer que la función de devolución de llamada tarde tiempo incluyen la realización de E/S de archivos, la espera de un evento y la realización de llamadas a procedimientos remotos externos.

Requisitos

Requisito Value
Cliente mínimo compatible
Windows 8 [solo aplicaciones de escritorio]
Servidor mínimo compatible
Windows Server 2012 [solo aplicaciones de escritorio]
Encabezado
Winsvcp.h
Archivo DLL
SecHost.dll

Vea también

CreateService

OpenService

OpenSCManager

UnsubscribeServiceChangeNotifications

QueryServiceDynamicInformation