Função EnumServicesStatusExA (winsvc.h)
Enumera serviços no banco de dados do gerenciador de controle de serviço especificado. O nome e status de cada serviço são fornecidos, juntamente com dados adicionais com base no nível de informações especificado.
Sintaxe
BOOL EnumServicesStatusExA(
[in] SC_HANDLE hSCManager,
[in] SC_ENUM_TYPE InfoLevel,
[in] DWORD dwServiceType,
[in] DWORD dwServiceState,
[out, optional] LPBYTE lpServices,
[in] DWORD cbBufSize,
[out] LPDWORD pcbBytesNeeded,
[out] LPDWORD lpServicesReturned,
[in, out, optional] LPDWORD lpResumeHandle,
[in, optional] LPCSTR pszGroupName
);
Parâmetros
[in] hSCManager
Um identificador para o banco de dados do gerenciador de controle de serviço. Esse identificador é retornado pela função OpenSCManager e deve ter o direito de acesso SC_MANAGER_ENUMERATE_SERVICE . Para obter mais informações, consulte Segurança do Serviço e Direitos de Acesso.
[in] InfoLevel
Os atributos de serviço que devem ser retornados. Use SC_ENUM_PROCESS_INFO para recuperar o nome e as informações de status de serviço para cada serviço no banco de dados. O parâmetro lpServices é um ponteiro para um buffer que recebe uma matriz de estruturas ENUM_SERVICE_STATUS_PROCESS . O buffer deve ser grande o suficiente para manter as estruturas, bem como as cadeias de caracteres para as quais seus membros apontam.
Atualmente, nenhum outro nível de informação é definido.
[in] dwServiceType
O tipo de serviços a serem enumerados. Esse parâmetro pode usar um dos valores a seguir.
Valor | Significado |
---|---|
|
Serviços do tipo SERVICE_KERNEL_DRIVER e SERVICE_FILE_SYSTEM_DRIVER. |
|
Serviços de driver do sistema de arquivos. |
|
Serviços de driver. |
|
Serviços do tipo SERVICE_WIN32_OWN_PROCESS e SERVICE_WIN32_SHARE_PROCESS. |
|
Serviços executados em seus próprios processos. |
|
Serviços que compartilham um processo com um ou mais outros serviços. Para obter mais informações, consulte Programas de serviço. |
[in] dwServiceState
O estado dos serviços a serem enumerados. Esse parâmetro pode usar um dos valores a seguir.
[out, optional] lpServices
Um ponteiro para o buffer que recebe as informações de status. O formato desses dados depende do valor do parâmetro InfoLevel .
O tamanho máximo dessa matriz é de 256 K bytes. Para determinar o tamanho necessário, especifique NULL para esse parâmetro e 0 para o parâmetro cbBufSize . A função falhará e GetLastError retornará ERROR_MORE_DATA. O parâmetro pcbBytesNeeded receberá o tamanho necessário.
Windows Server 2003 e Windows XP: O tamanho máximo dessa matriz é de 64 K bytes. Esse limite foi aumentado a partir do Windows Server 2003 com SP1 e Windows XP com SP2.
[in] cbBufSize
O tamanho do buffer apontado pelo parâmetro lpServices , em bytes.
[out] pcbBytesNeeded
Um ponteiro para uma variável que recebe o número de bytes necessários para retornar as entradas de serviço restantes, se o buffer for muito pequeno.
[out] lpServicesReturned
Um ponteiro para uma variável que recebe o número de entradas de serviço retornadas.
[in, out, optional] lpResumeHandle
Um ponteiro para uma variável que, na entrada, especifica o ponto de partida da enumeração. Você deve definir esse valor como zero na primeira vez que a função EnumServicesStatusEx for chamada. Na saída, esse valor será zero se a função for bem-sucedida. No entanto, se a função retornar zero e a função GetLastError retornar ERROR_MORE_DATA, esse valor indicará a próxima entrada de serviço a ser lida quando a função EnumServicesStatusEx for chamada para recuperar os dados adicionais.
[in, optional] pszGroupName
O nome do grupo de ordem de carga. Se esse parâmetro for uma cadeia de caracteres, os únicos serviços enumerados serão aqueles que pertencem ao grupo que tem o nome especificado pela cadeia de caracteres. Se esse parâmetro for uma cadeia de caracteres vazia, somente os serviços que não pertencem a nenhum grupo serão enumerados. Se esse parâmetro for NULL, a associação de grupo será ignorada e todos os serviços serão enumerados.
Valor retornado
Se a função for bem-sucedida, o valor retornado será diferente de zero.
Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError. Os erros a seguir podem ser retornados.
Código de retorno | Descrição |
---|---|
|
O identificador não tem o direito de acesso SC_MANAGER_ENUMERATE_SERVICE. |
|
O buffer é muito pequeno. Nem todos os dados no banco de dados ativo podem ser retornados. O parâmetro pcbBytesNeeded contém o número de bytes necessários para receber as entradas restantes. |
|
Um valor de parâmetro inválido foi usado. |
|
O manipulador é inválido. |
|
O parâmetro InfoLevel contém um valor sem suporte. |
|
O sistema está sendo desligado; essa função não pode ser chamada. |
Comentários
Se o chamador não tiver o direito de acesso SERVICE_QUERY_STATUS a um serviço, o serviço será silenciosamente omitido da lista de serviços retornados ao cliente.
Observação
O cabeçalho winsvc.h define EnumServicesStatusEx 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. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.
Requisitos
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | winsvc.h (incluir Windows.h) |
Biblioteca | Advapi32.lib |
DLL | Advapi32.dll |