Функция EnumDependentServices извлекает имя и состояние каждой службы, которая зависит от указанной службы; то есть, указанная служба должна запуститься прежде, чем зависимые службы могут запуститься.
Синтаксис
BOOL EnumDependentServices( SC_HANDLE hService, DWORD dwServiceState, LPENUM_SERVICE_STATUS lpServices, DWORD cbBufSize, LPDWORD pcbBytesNeeded, LPDWORD lpServicesReturned ); |
Значение | Предназначение |
---|---|
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 000 байтов. Чтобы определять необходимый размер, задайте значение ПУСТО (NULL) для этого параметра и 0 для параметра cbBufSize. Функция завершится ошибкой и GetLastError возвратит значение ERROR_MORE_DATA. Параметр pcbBytesNeeded получит необходимый размер.
Если функция завершается успешно, возвращаемое значение является ненулевым.
Если функция завершается ошибкой, возвращаемое значение - ноль. Чтобы получить дополнительную информацию об ошибке, вызовите GetLastError.
Следующие коды ошибки могут установиться диспетчером управления службами. Другие коды ошибки могут установиться функциями реестра, которые вызывает диспетчер управления службами.
Код возврата | Описание |
---|---|
ERROR_ACCESS_DENIED | Дескриптор не имеет права доступа SERVICE_ENUMERATE_DEPENDENTS. |
ERROR_INVALID_HANDLE | Указанный дескриптор недействителен. |
ERROR_INVALID_PARAMETER | Параметр, который определялся, недействителен. |
ERROR_MORE_DATA | Буфер, на который указывает lpServices является не достаточно большим. Функция устанавливает переменную, на которую указывает lpServicesReturned в фактическое число сервисных записей, сохраненных в буфере. Функция устанавливает переменную, на которую указывает pcbBytesNeeded в число байтов, в которых требуется сохранить все сервисные записи. |
Возвращенные записи служб располагаются в обратном порядке по отношению к очередности запуска, с учетом порядка групп. Если Вы должны остановить зависимые службы, Вы можете использовать порядок записей, написанных в буфере lpServices, чтобы остановить зависимые службы в правильной последовательности.
Пример смотри в статье Остановка службы.
Обзор Службы, Функции, используемые службами, CreateService, EnumServicesStatusEx, OpenService, ENUM_SERVICE_STATUS
Размещение и совместимость EnumDependentServices |
||
К |
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 |
Реализуется как EnumDependentServicesW (Unicode) и EnumDependentServicesA (ANSI). |
|
Замечания по платформе |
Не имеется |