Функция EnumServicesStatusEx

Функция EnumServicesStatusEx перечисляет службы в указанной базе данных диспетчера управления службами. Имя и состояние каждой службы предоставляются, наряду с дополнительными данными, основанными на указанном информационном уровне. 

Сиснтаксис

BOOL EnumServicesStatusEx(
  SC_HANDLE hSCManager,
  SC_ENUM_TYPE InfoLevel,
  DWORD dwServiceType,
  DWORD dwServiceState,
  LPBYTE lpServices,
  DWORD cbBufSize,
  LPDWORD pcbBytesNeeded,
  LPDWORD lpServicesReturned,
  LPDWORD lpResumeHandle,
  LPCTSTR pszGroupName
);

Параметры

hSCManager
[in] Дескриптор базы данных диспетчера управления службой. Этот дескриптор возвращается функцией OpenSCManager, и должен иметь право доступа SC_MANAGER_ENUMERATE_SERVICE. Дополнительную информацию смотри в статье Защита службы и права доступа.
InfoLevel
[in] Сервисные атрибуты, которые должны возвратиться. Используйте SC_ENUM_PROCESS_INFO, чтобы извлечь имя и информацию состояния службы для каждой службы в базе данных. Параметр lpServices - указатель на буфер, который принимает массив структур ENUM_SERVICE_STATUS_PROCESS. Буфер должен быть достаточно большим, чтобы хранить структуры так же как строки, на которые указывают их члены.

В настоящее время, никакие другие информационные уровни не определены.

dwServiceType

[in] Тип перечисляемых служб. Этот параметр может быть одно или несколько следующих значений.
Значение Предназначение
SERVICE_DRIVER Перечисляет службы типа SERVICE_KERNEL_DRIVER и SERVICE_FILE_SYSTEM_DRIVER.
SERVICE_WIN32 Перечисляет службы типа SERVICE_WIN32_OWN_PROCESS и SERVICE_WIN32_SHARE_PROCESS.

dwServiceState

[in] Состояние служб, которые будут перечислены. Этот параметр может быть одним из следующих значений.
Значение Предназначение
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_INACTIVE и SERVICE_ACTIVE.

lpServices

[out] Указатель на буфер, который получает информацию о статусе. Формат этих данных зависит от значения параметра InfoLevel.

Максимальный размер этого массива - 64 КБ. Чтобы определять необходимый размер, задайте значение ПУСТО (NULL) для этого параметра и 0 для параметра cbBufSize. Функция завершится ошибкой, а GetLastError возвратит ERROR_MORE_DATA. Параметр pcbBytesNeeded получит необходимый размер.

cbBufSize

[in] Размер буфера, на который указывает параметр lpServices, в байтах.

pcbBytesNeeded

[out] Указатель на переменную, которая получает число байтов, необходимых, чтобы возвратить  остающиеся сервисные записи, если буфер является слишком маленьким.

lpServicesReturned

[out] Указатель на переменную, которая получает число возвращаемых сервисных записей.

lpResumeHandle

[in, out] Указатель на переменную, которая, при вводе данных, задает отправную точку перечисления. Вы должны установить это значение в ноль в первый раз, когда вызывают функцию EnumServicesStatusEx. При выводе данных, это значение - ноль если функция завершается успешно. Однако, если функция возвращает значение ноль, а функция GetLastError возвращает ERROR_MORE_DATA, это значение указывает на следующую сервисную запись, которая будет прочитана, когда вызывают функцию EnumServicesStatusEx, чтобы извлечь дополнительные данные.

pszGroupName

[in] Имя группы в очереди загрузки. Если этот параметр - строка, перечисляются только те службы, которые принадлежат группе, имя которой задано строкой. Если этот параметр - пустая строка, то перечисляются только службы, которые не являются членом какой-либо группы. Если этот параметр - значение ПУСТО (NULL), членство группы игнорируется и перечисляются  все службы.

Возвращаемые значения

Если функция завершается успешно, возвращаемое значение является ненулевым.

Если функция завершается ошибкой, возвращаемое значение - нуль. Чтобы получить дополнительную информацию об ошибке, вызовите GetLastError.  Могут возвратиться следующие ошибки.

Код возврата Описание
ERROR_ACCESS_DENIED Дескриптор не имеет права доступа SC_MANAGER_ENUMERATE_SERVICE.
ERROR_MORE_DATA Буфер является слишком маленьким. Не все данные в активной базе данных могли возвратиться. Параметр pcbBytesNeeded имеет в своем составе число байтов, из которых можно получить остающиеся записи.
ERROR_INVALID_PARAMETER Использовалось неправильное значение параметра.
ERROR_INVALID_HANDLE Дескриптор недействителен.
ERROR_INVALID_LEVEL Параметр InfoLevel имеет в своем составе не поддерживаемое значение.
ERROR_SHUTDOWN_IN_PROGRESS Система закрывается; эту функцию нельзя вызвать.

Смотри также

Обзор Службы, Функции, используемые службамиENUM_SERVICE_STATUS_PROCESS

Размещение и совместимость EnumServicesStatusEx  

К

Windows XP

Да 

л

Windows 2000 Professional

Да

и

Windows NT

Нет

е

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

Реализуется как EnumServicesStatusExW (Unicode) и EnumServicesStatusExA (ANSI)

 Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
В оглавление справки

Hosted by uCoz