Функция EnumDependentServicesA (winsvc.h)
Извлекает имя и состояние каждой службы, зависящую от указанной службы; То есть для запуска зависимых служб необходимо запустить указанную службу.
Синтаксис
BOOL EnumDependentServicesA(
[in] SC_HANDLE hService,
[in] DWORD dwServiceState,
[out, optional] LPENUM_SERVICE_STATUSA lpServices,
[in] DWORD cbBufSize,
[out] LPDWORD pcbBytesNeeded,
[out] LPDWORD lpServicesReturned
);
Параметры
[in] hService
Дескриптор службы. Этот дескриптор
[in] dwServiceState
Состояние перечисления служб. Этот параметр может быть одним из следующих значений.
[out, optional] lpServices
Указатель на массив структур ENUM_SERVICE_STATUS, получающих сведения о имени и состоянии службы для каждой зависимой службы в базе данных. Буфер должен быть достаточно большим для хранения структур, а также строк, к которым указываются их члены.
Порядок служб в этом массиве является обратным порядком начала служб. Другими словами, первая служба в массиве — это служба, которая будет запущена последней, а последняя служба в массиве — это служба, которая будет запущена первым.
Максимальный размер этого массива составляет 64 000 байт. Чтобы определить требуемый размер, укажите NULL для этого параметра и 0 для параметра cbBufSize. Функция завершится ошибкой, и GetLastError вернет ERROR_MORE_DATA. Параметр pcbBytesNeed получит необходимый размер.
[in] cbBufSize
Размер буфера, на который указывает параметр lpServices в байтах.
[out] pcbBytesNeeded
Указатель на переменную, которая получает количество байтов, необходимых для хранения массива записей службы. Переменная получает это значение только в том случае, если буфер, на который указывает lpServices, слишком мал, указанный сбоем функции и ошибкой ERROR_MORE_DATA; в противном случае содержимое pcbBytesNeeded не определено.
[out] lpServicesReturned
Указатель на переменную, которая получает количество возвращаемых записей службы.
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение ненулевое.
Если функция завершается ошибкой, возвращаемое значение равно нулю. Чтобы получить расширенные сведения об ошибке, вызовите GetLastError.
Следующие коды ошибок могут быть заданы диспетчером управления службами. Другие коды ошибок могут быть заданы функциями реестра, которые вызываются диспетчером управления службами.
Возвращаемый код | Описание |
---|---|
|
Дескриптор не имеет права доступа SERVICE_ENUMERATE_DEPENDENTS. |
|
Указанный дескриптор недопустим. |
|
Указанный параметр недопустим. |
|
Буфер, на который указывает lpServices, недостаточно велик. Функция задает переменную, на которую указывает lpServicesReturned фактическое количество записей службы, хранящихся в буфере. Функция задает переменную, на которую указывает pcbBytesNeeded количество байтов, необходимых для хранения всех записей службы. |
Замечания
Возвращаемые записи служб упорядочены в обратном порядке начального порядка с учетом порядка групп. Если необходимо остановить зависимые службы, можно использовать порядок записей, записанных в буфер lpServices, чтобы остановить зависимые службы в правильном порядке.
Примеры
Пример см. в разделе остановки службы.
Заметка
Заголовок winsvc.h определяет EnumDependentServices в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows XP [только классические приложения] |
минимальный поддерживаемый сервер | Windows Server 2003 [только классические приложения] |
целевая платформа | Виндоус |
заголовка | winsvc.h (включая Windows.h) |
библиотеки |
Advapi32.lib |
DLL | Advapi32.dll |