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