Функция EnumServicesStatus

Declare Function EnumServicesStatus Lib "advapi32.dll" Alias "EnumServicesStatusA" ( _
    ByVal hSCManager As Long, _
    ByVal dwServiceType As Long, _
    ByVal dwServiceState As Long, _
    lpServices As Any, _
    ByVal cbBufSize As Long, _
    pcbBytesNeeded As Long, _
    lpServicesReturned As Long, _
    lpResumeHandle As Long) As Long

EnumServicesStatus перечисляет службы в заданной базе данных менеджера управления службами с получением информации об имени и состоянии каждой службы.

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

В случае успеха функция возвращает ненулевое значение. В случае ошибки функция возвращает 0. Для получения более подробной информации об ошибке используйте функцию GetLastError. Вот некоторые коды ошибок

ERROR_ACCESS_DENIEDУказанный описатель не имеет права доступа
ERROR_INVALID_HANDLEУказанный описатель не существует
ERROR_INVALID_PARAMETERНеправильный параметр

Параметры

hSCManager
Описатель менеджера управления службами. Данный описатель получается при вызове функций OpenSCManager и должен иметь право доступа SC_MANAGER_ENUMERATE_SERVICE
dwServiceType
Тип службы. Может принимать следующие значения
SERVICE_DRIVERПеречисляет службы типа SERVICE_KERNEL_DRIVER и SERVICE_FILE_SYSTEM_DRIVER
SERVICE_WIN32Перечисляет службы типа SERVICE_WIN32_OWN_PROCESS и SERVICE_WIN32_SHARE_PROCESS
dwServiceState
Состояния служб для перечисления. Может принимать одно из следующих значений
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
lpServices
Буфер, содержащий массив структур ENUM_SERVICE_STATUS
cbBufSize
Размер буфера lpServices в байтах
pcbBytesNeeded
Переменная, получающая число байт, необходимых для возвращения всей информации
lpServicesReturned
Переменная, получающая число служб
lpResumeHandle
Переменная, при входе задающая начальную точку перечисления. Вы должны установить это значение в 0 первый раз при вызове функции. На выходе при значении 0 функция успешно была вызвана.

Пример

Смотри пример ServicesStopPauseStart.zip

Смотри также

EnumDependentServices, EnumServicesStatusEx, OpenSCManager

Категория

Службы