Функция EnumServicesStatus перечисляет службы в указанной базе данных диспетчера управления службами. Имя и состояние каждой службы предоставляются.
Эта функция была заменена функцией EnumServicesStatusEx. Она возвращает ту же самую информацию, что и возвращаемые значения EnumServicesStatus, плюс идентификатор процесса (PID) и дополнительная информация для службы. Кроме того, EnumServicesStatusEx дает возможность Вам перечислить службы, которые принадлежат указанной группе.
Синтаксис
BOOL EnumServicesStatus( SC_HANDLE hSCManager, DWORD dwServiceType, DWORD dwServiceState, LPENUM_SERVICE_STATUS lpServices, DWORD cbBufSize, LPDWORD pcbBytesNeeded, LPDWORD lpServicesReturned, LPDWORD lpResumeHandle ); |
Значение | Предназначение |
---|---|
SERVICE_DRIVER | Перечисляет службы типа SERVICE_KERNEL_DRIVER и SERVICE_FILE_SYSTEM_DRIVER. |
SERVICE_WIN32 | Перечисляет службы типа SERVICE_WIN32_OWN_PROCESS и SERVICE_WIN32_SHARE_PROCESS. |
Значение | Предназначение |
---|---|
SERVICE_ACTIVE | Перечисляет службы, которые находятся в следующих состояниях: SERVICE_START_PENDING, SERVICE_STOP_PENDING, SERVICE_RUNNING, SERVICE_CONTINUE_PENDING, SERVICE_PAUSE_PENDING и SERVICE_PAUSED. |
SERVICE_INACTIVE | Перечисляет службы, которые находятся в состоянии SERVICE_STOPPED. |
SERVICE_STATE_ALL | Комбинирует следующие состояния: SERVICE_ACTIVE и SERVICE_INACTIVE. |
Максимальный размер этого массива - 64 КБ. Чтобы определить необходимый размер, задайте значение ПУСТО (NULL) для этого параметра и 0 для параметра cbBufSize. Функция завершится ошибкой, а GetLastError возвратит ERROR_INSUFFICIENT_BUFFER. Параметр pcbBytesNeeded получит необходимый размер.
cbBufSize
[in] Размер буфера, на который указывает параметр lpServices, в байтах.pcbBytesNeeded
[out] Указатель на переменную, которая получает число байтов, необходимых для возврата остатка сервисных записей, если буфер является слишком маленьким.lpServicesReturned
[out] Указатель на переменную, которая получает число возвращаемых сервисных записей.lpResumeHandle
[in, out] Указатель на переменную, которая при вводе данных задает отправную точку перечисления. В первый раз, когда эту функцию вызывают, Вы должны установить это значение в нуль. При выводе данных, это значение - нуль, если функция завершается успешно. Однако, если функция возвращает нуль, а функция GetLastError возвращает ERROR_MORE_DATA, это значение используется для того, чтобы указать следующую сервисную запись, которая будет прочитана, когда функцию вызывают, чтобы извлечь дополнительные данные.Если функция завершается успешно, возвращаемое значение является ненулевым.
Если функция завершается ошибкой, возвращаемое значение - нуль. Чтобы получить дополнительную информацию об ошибке, вызовите GetLastError.
Следующие коды ошибки могут установиться диспетчером управления службами. Другие коды ошибки могут установиться функциями реестра, которые вызывает диспетчер управления службами.
Код возврата | Описание |
---|---|
ERROR_ACCESS_DENIED | Дескриптор не имеет права доступа SC_MANAGER_ENUMERATE_SERVICE. |
ERROR_INVALID_HANDLE | Указанный дескриптор недействителен. |
ERROR_INVALID_PARAMETER | Параметр, который определялся, недействителен. |
ERROR_MORE_DATA | Сервисных записей больше, чем поместилось бы в буфер lpServices. Фактическое число сервисных записей, записанных lpServices возвращается в параметре lpServicesReturned. Число необходимых байтов, чтобы получить остающиеся записи возвращается в параметре pcbBytesNeeded. Остающиеся службы могут быть перечислены дополнительными вызовами функции EnumServicesStatus с параметром lpResumeHandle, указывающим следующую службу для чтения. |
Смотри также
Обзор Службы, Функции, используемые службами, EnumDependentServices, EnumServicesStatusEx, OpenSCManager, ENUM_SERVICE_STATUS
Размещение и совместимость EnumServicesStatus |
||
К |
Windows XP |
Да |
л |
Windows 2000 Professional |
Да |
и |
Windows NT Workstation |
Да |
е |
Windows Me |
Нет |
н |
Windows 98 |
Нет |
т |
Windows 95 |
Нет |
С |
Windows Server 2003 |
Да |
е | Windows 2000 Server | Да |
р | Windows NT Server | Да |
в | ||
е | ||
р | ||
Используемая библиотека |
Advapi32.lib |
|
Используемая DLL | advapi32.dll | |
Заголовочный файл | ||
- объявлено в |
Winsvc.h |
|
- включено в |
Windows.h |
|
Unicode |
Реализуется как EnumServicesStatusW(Unicode) и EnumServicesStatusA(ANSI) |
|
Замечания по платформе |
Не имеется |