Функция GetServiceDirectory (winsvc.h)

Возвращает путь к расположению файловой системы для каждой службы, в которое служба будет считывать и (или) записывать состояние.

Синтаксис

DWORD GetServiceDirectory(
  SERVICE_STATUS_HANDLE  hServiceStatus,
  SERVICE_DIRECTORY_TYPE eDirectoryType,
  PWCHAR                 lpPathBuffer,
  DWORD                  cchPathBufferLength,
  DWORD                  *lpcchRequiredBufferLength
);

Параметры

hServiceStatus

Дескриптор структуры сведений о состоянии для текущей службы. Этот дескриптор возвращается функцией RegisterServiceCtrlHandler .

eDirectoryType

Элемент перечисления SERVICE_DIRECTORY_TYPE , определяющий тип извлекаемого пути к каталогу службы.

lpPathBuffer

Буфер, выделенный вызывающим объектом, в который будет скопирована строка пути. Если значение РАВНО NULL, вызов функции завершится сбоем с ERROR_INSUFFICIENT_BUFFER и возвратит необходимую длину буфера в WCHAR в lpcchRequiredBufferLength. Если значение не равно NULL, длина буфера должна быть указана в cchPathBufferLength. Путь, если он записан, будет заканчиваться значением NULL.

cchPathBufferLength

Длина буфера, предоставленного в lpPathBuffer, в единицах WCHARS. Этот аргумент игнорируется, если lpPathBuffer имеет значение NULL.

lpcchRequiredBufferLength

Это значение равно требуемой длине буфера в единицах WCHAR. Эта длина включает завершающий символ NULL.

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

Возвращает ERROR_SUCCESS при успешном завершении всех операций и записи в lpPathBuffer пути к состоянию, завершаемого значением NULL. Возвращает ERROR_INSUFFICIENT_BUFFER, если lpPathBuffer был недостаточно велик, чтобы содержать путь к состоянию, или если lpPathBuffer имеет значение NULL. В этом случае необходимая длина буфера в WCHAR возвращается через lpcchRequiredBufferLength. При возникновении другого сбоя возвращается код ошибки Win32.

Комментарии

Для ServiceDirectoryPersistentState безопасность каталога настроена таким образом, чтобы предоставить доступ на запись только к локальной системной учетной записи и идентификатору безопасности службы. Убедитесь, что идентификаторы безопасности служб включены для любой службы, которая вызывает этот API. Дополнительные сведения см. в разделе SERVICE_SID_INFO.

Аналогичный API, предоставляющий состояние службы, который может быть предоставлен совместно со связанными программами, см. в разделе GetSharedServiceDirectory.

Все каталоги состояний служб удаляются диспетчером управления службами после удаления службы.

Требования

   
Минимальная версия клиента Windows 10 версии 2004 (10.0; Сборка 19041)
Минимальная версия сервера Windows Server версии 2004 (10.0; Сборка 19041)
Верхняя часть winsvc.h
Библиотека Onecore.lib

См. также раздел

RegisterServiceCtrlHandler

GetSharedServiceDirectory

SERVICE_SID_INFO