Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Registra uma função para lidar com solicitações de controle de serviço.
Essa função foi substituída pela função RegisterServiceCtrlHandlerEx. Um serviço pode usar qualquer função, mas a nova função dá suporte a dados de contexto definidos pelo usuário e a nova função de manipulador dá suporte a códigos de controle estendidos adicionais.
Sintaxe
SERVICE_STATUS_HANDLE RegisterServiceCtrlHandlerW(
[in] LPCWSTR lpServiceName,
[in] LPHANDLER_FUNCTION lpHandlerProc
);
Parâmetros
[in] lpServiceName
O nome do serviço executado pelo thread de chamada. Esse é o nome do serviço especificado pelo programa de controle de serviço na função CreateService ao criar o serviço.
Se o tipo de serviço for SERVICE_WIN32_OWN_PROCESS, a função não verificará se o nome especificado é válido, pois há apenas um serviço registrado no processo.
[in] lpHandlerProc
Um ponteiro para a função de manipulador a ser registrada. Para obter mais informações, consulte Handler.
Valor de retorno
Se a função for bem-sucedida, o valor retornado será um identificador de status de serviço.
Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.
Os códigos de erro a seguir podem ser definidos pelo gerenciador de controle de serviço.
| Código de retorno | Descrição |
|---|---|
|
Não há memória suficiente disponível para converter um parâmetro de cadeia de caracteres ANSI em Unicode. Esse erro não ocorre para parâmetros de cadeia de caracteres Unicode. |
|
A entrada de serviço foi especificada incorretamente quando o processo chamou a função |
Observações
A função ServiceMain de um novo serviço deve chamar imediatamente a função RegisterServiceCtrlHandler para registrar uma função de manipulador de controle com o dispatcher de controle. Isso permite que o dispatcher de controle invoque a função especificada quando receber solicitações de controle para esse serviço. Para obter uma lista de códigos de controle possíveis, consultedo Manipulador de
A função
Quando a função do manipulador de controle é invocada com uma solicitação de controle, o serviço deve chamar SetServiceStatus para relatar o status para o gerenciador de controle de serviço somente se o status do serviço tiver sido alterado, como quando o serviço estiver processando controles de parada ou desligamento. Se o status do serviço não tiver sido alterado, o serviço não deverá relatar o status ao gerenciador de controle de serviço.
O identificador de status do serviço não precisa ser fechado.
Exemplos
Para obter um exemplo, consulte Gravando uma função ServiceMain.
Nota
O cabeçalho winsvc.h define RegisterServiceCtrlHandler como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.
Requisitos
| Requisito | Valor |
|---|---|
| de cliente com suporte mínimo | Windows XP [somente aplicativos da área de trabalho] |
| servidor com suporte mínimo | Windows Server 2003 [somente aplicativos da área de trabalho] |
| da Plataforma de Destino |
Windows |
| cabeçalho | winsvc.h (incluir Windows.h) |
| biblioteca | Advapi32.lib |
| de DLL |
Advapi32.dll |
Consulte também
do Manipulador de
de função do manipulador de controle de serviço