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 |
|
Archivo DLL |
|