Compartilhar via


Função SubscribeServiceChangeNotifications

Assina o serviço status notificações de alteração usando uma função de retorno de chamada.

Sintaxe

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]

Um identificador para o serviço ou um identificador para o SCM (gerenciador de controle de serviço) a ser monitorado quanto a alterações.

Os identificadores para serviços são retornados pela função OpenService e CreateService e devem ter o direito de acesso SERVICE_QUERY_STATUS . Os identificadores para o gerenciador de controle de serviço são retornados pela função OpenSCManager e devem ter o direito de acesso SC_MANAGER_ENUMERATE_SERVICE .

eEventType [in]

Especifica o tipo de status alterações que devem ser relatadas. Esse parâmetro é definido como um dos valores especificados em SC_EVENT_TYPE. O comportamento dessa função é diferente dependendo do tipo de evento a seguir.

Valor Significado
SC_EVENT_DATABASE_CHANGE
0
Um serviço foi adicionado ou excluído. O parâmetro hService deve ser um identificador para o SCM.
SC_EVENT_PROPERTY_CHANGE
1
Uma ou mais propriedades de serviço foram atualizadas. O parâmetro hService deve ser um identificador para o serviço.
SC_EVENT_STATUS_CHANGE
2
O status de um serviço foi alterado. O parâmetro hService deve ser um identificador para o serviço.

pCallback [in]

Especifica a função de retorno de chamada. O retorno de chamada deve ser definido como tendo um tipo de SC_NOTIFICATION_CALLBACK. Para obter mais informações, consulte Comentários.

pCallbackContext [in, opcional]

Um ponteiro que representa o contexto para esse retorno de chamada de notificação.

pSubscription [out]

Retorna um ponteiro para a assinatura resultante do registro de retorno de chamada de notificação. O chamador é responsável por chamar UnsubscribeServiceChangeNotifications para parar de receber notificações.

Valor retornado

Se a função for bem-sucedida, o valor retornado será ERROR_SUCCESS.

Se a função falhar, o valor retornado será um dos códigos de erro do sistema.

Comentários

A função de retorno de chamada é declarada da seguinte maneira:

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

A função de retorno de chamada recebe um ponteiro para o contexto fornecido pelo chamador. O retorno de chamada é invocado como resultado do serviço status evento de alteração. Quando o retorno de chamada é invocado, ele é fornecido com uma máscara de bits de valores SERVICE_NOTIFY_XXX que indica o tipo de serviço status alteração. Quando o retorno de chamada é fornecido com zero em vez de um valor válido SERVICE_NOTIFY_XXX , o aplicativo deve verificar o que foi alterado.

A função de retorno de chamada não deve bloquear a execução. Se você espera que a execução da função de retorno de chamada leve tempo, descarregue o trabalho que você executa na função de retorno de chamada para um thread separado enfileirando um item de trabalho em um thread em um pool de threads. Alguns tipos de trabalho que podem fazer com que a função de retorno de chamada leve tempo incluem a execução de E/S de arquivo, a espera de um evento e a realização de chamadas de procedimento remoto externo.

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows 8 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte
Windows Server 2012 [somente aplicativos da área de trabalho]
Cabeçalho
Winsvcp.h
DLL
SecHost.dll

Confira também

CreateService

Openservice

OpenSCManager

UnsubscribeServiceChangeNotifications

QueryServiceDynamicInformation