Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция DsGetSpn создает массив из одного или нескольких имен субъектов-служб (SPN). Каждое имя в массиве определяет экземпляр службы. Эти spNs могут быть зарегистрированы в службе каталогов (DS) с помощью функции DsWriteAccountSpn.
Синтаксис
NTDSAPI DWORD DsGetSpnW(
[in] DS_SPN_NAME_TYPE ServiceType,
[in] LPCWSTR ServiceClass,
[in, optional] LPCWSTR ServiceName,
[in] USHORT InstancePort,
[in] USHORT cInstanceNames,
[in, optional] LPCWSTR *pInstanceNames,
[in, optional] const USHORT *pInstancePorts,
[out] DWORD *pcSpn,
[out] LPWSTR **prpszSpn
);
Параметры
[in] ServiceType
Определяет формат субъектов-служб для создания. Параметр ServiceType может иметь одно из следующих значений.
DS_SPN_DNS_HOST, DS_SPN_DN_HOST, DS_SPN_NB_HOST
Имена субъектов-служб имеют следующий формат.
ServiceClass/ InstanceName: InstancePort
Параметр ServiceName должен быть NULL. Это формат имени субъекта-службы для службы на основе узла, которая предоставляет службы, определенные с его узлом компьютера. Компонент InstancePort необязателен.
DS_SPN_DOMAIN, DS_SPN_NB_DOMAIN
Имена субъектов-служб имеют следующий формат.
ServiceClass/ InstanceName: InstancePort/ ServiceName
Параметр serviceName
DS_SPN_SERVICE
Имена субъектов-служб имеют следующий формат.
ServiceClass/ InstanceName: InstancePort/ ServiceName
Параметр ServiceName должен быть каноническим DN или DNS-именем, определяющим экземпляр службы. Например, это может быть DNS-имя записи SRV или различающееся имя точки подключения службы для этого экземпляра службы.
[in] ServiceClass
Указатель на строку с константой, завершаемой значением NULL, которая указывает класс службы; например, http. Как правило, это может быть любая строка, уникальная для службы.
[in, optional] ServiceName
Указатель на строку, завершающуюся значением NULL, которая указывает DNS-имя или различающееся имя службы.
ServiceName не требуется для службы на основе узла. Дополнительные сведения см. в описании параметра ServiceType
[in] InstancePort
Указывает номер порта экземпляра службы. Если это значение равно нулю, имя субъекта-службы не включает номер порта.
[in] cInstanceNames
Указывает количество элементов в массивах pInstanceNames и pInstancePorts. Если это значение равно нулю, pInstanceNames должны указывать на массив строк cInstanceNames, а pInstancePorts можно либо NULL, либо указатель на массив номеров портов cInstanceNames. Если это значение равно нулю, DsGetSpn возвращает только одну имя субъекта-службы в массив е prpszSpn и pInstanceNames и pInstancePorts игнорируются.
[in, optional] pInstanceNames
Указатель на массив строк, завершающих значение NULL, которые указывают дополнительные имена экземпляров (не используются для имен узлов). Этот параметр игнорируется, если cInstanceNames равно нулю. В этом случае компонент имени экземпляра
[in, optional] pInstancePorts
Указатель на массив дополнительных портов экземпляра. Если это значение не являетсяNULL, он должен указывать на массив cInstanceNames номеров портов. Если это значение равно null, имена субъектов-служб не включают номер порта. Этот параметр игнорируется, если cInstanceNames равно нулю.
[out] pcSpn
Указатель на переменную, которая получает число субъектов-служб, содержащихся в prpszSpn.
[out] prpszSpn
Указатель на переменную, которая получает указатель на массив субъектов-служб. Этот массив должен быть освобожден с помощью DsFreeSpnArray.
Возвращаемое значение
Если функция возвращает массив субъектов-служб, возвращаемое значение ERROR_SUCCESS.
Если функция завершается ошибкой, возвращаемое значение может быть одним из следующих кодов ошибок.
Замечания
Создание имен субъектов-служб для нескольких экземпляров реплицированной службы, работающей на нескольких хост-компьютерах
- Задайте cInstanceNames число экземпляров.
- Укажите имена ведущих компьютеров в массиве pInstanceNames.
Создание имен субъектов-служб для нескольких экземпляров службы, работающей на одном компьютере узла
- Задайте cInstanceNames число экземпляров.
- Задайте для каждой записи в массиве pInstanceNames DNS-имя хост-компьютера.
- Используйте параметр pInstancePorts, чтобы указать массив уникальных номеров портов для каждого экземпляра, чтобы отсоединить имена субъектов-служб.
Приложение с соответствующими привилегиями, которые обычно являются администраторами домена, может вызвать функцию DsWriteAccountSpn, чтобы зарегистрировать одну или несколько имен субъектов-служб в учетной записи пользователя или компьютера, в которой выполняется служба. Затем клиенты могут использовать имена субъектов-служб для проверки подлинности службы.
Заметка
Заголовок ntdsapi.h определяет DsGetSpn как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
| Требование | Ценность |
|---|---|
| минимальные поддерживаемые клиентские | Windows Vista |
| минимальный поддерживаемый сервер | Windows Server 2008 |
| целевая платформа | Виндоус |
| заголовка | ntdsapi.h |
| библиотеки |
Ntdsapi.lib |
| DLL | Ntdsapi.dll |