Функция QueryServiceConfig извлекает параметры конфигурации указанной службы. Дополнительные параметры конфигурации - разрешает использовать функция QueryServiceConfig2.
Синтаксис
BOOL QueryServiceConfig( SC_HANDLE hService, LPQUERY_SERVICE_CONFIG lpServiceConfig, DWORD cbBufSize, LPDWORD pcbBytesNeeded ); |
Параметры
hService
[in] Дескриптор службы. Этот дескриптор возвращается функцией OpenService или CreateService и должен иметь право доступа SERVICE_QUERY_CONFIG. Дополнительную информацию смотри в статье Защита службы и права доступа.
lpServiceConfig
[out] Указатель на буфер, который получает информацию о конфигурации службы. Формат данных - это структура QUERY_SERVICE_CONFIG.
Максимальный размер этого массива - 8 КБ. Чтобы определять необходимый размер, задайте значение ПУСТО (NULL) для этого параметра и 0 для параметра cbBufSize. Функция завершится ошибкой, а GetLastError возвратит значение ERROR_INSUFFICIENT_BUFFER. Параметр pcbBytesNeeded получит необходимый размер.
cbBufSize
[in] Размер буфера, на который указывает параметр lpServiceConfig, в байтах.
pcbBytesNeeded
[out] Указатель на переменную, которая получает число байтов, необходимых для сохранения всей информации о конфигурации, если функция завершается ошибкой со значением ERROR_INSUFFICIENT_BUFFER.
Если функция завершается ошибкой, возвращаемое значение - ноль. Чтобы получить дополнительную информацию об ошибке, вызовите GetLastError.
Следующие коды ошибки могут устанавливаться диспетчером управления службами. Другие могут установиться функциями реестра, которые вызывает диспетчер управления службами.
| Код возврата | Описание |
|---|---|
| ERROR_ACCESS_DENIED | Дескриптор не имеет права доступа SERVICE_QUERY_CONFIG. |
| ERROR_INSUFFICIENT_BUFFER | Информации о конфигурации службы больше, чем вместится в буфер lpServiceConfig. Число байтов, необходимых для получения всей информации возвращается в параметре pcbBytesNeeded . В lpServiceConfig ничего не пишется. |
| ERROR_INVALID_HANDLE | Указанный дескриптор недействителен. |
Функция QueryServiceConfig возвращает информацию о конфигурации службы, сохраненную в реестре для конкретной службы. Эта информация о конфигурации сначала устанавливается программой управления службой, используя функцию CreateService. Эта информация, может быть обновлена программой конфигурации службы, используя функцию ChangeServiceConfig.
Если служба была запущена, когда информация о конфигурации была последний раз изменена, то информация, возвращенная функцией QueryServiceConfig не будет отражать текущую конфигурацию службы. Вместо этого она отразит конфигурацию службы, периода запуска. Ключ DisplayName - исключение для этого. Когда ключ DisplayName изменяется, то он вступает в силу немедленно, независимо от того, запускается ли служба.
Пример смотри в статье Запрос конфигурации службы.
Обзор Службы,
Функции,
используемые службами, ChangeServiceConfig, CreateService,
OpenService, QueryServiceConfig2,
|
Размещение и совместимость QueryServiceConfig |
||
| К | 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 | Реализуется как QueryServiceConfigW (Unicode) и QueryServiceConfigA (ANSI). | |
| Замечания по платформе | Не имеется | |