Функция DsMakeSpnA (dsparse.h)
Функция DsMakeSpn создает имя субъекта-службы ( SPN), определяющее экземпляр службы.
Клиентское приложение использует эту функцию для создания имени участника-службы, который используется для проверки подлинности экземпляра службы. Например, клиент может передать имя субъекта-службы в параметре pszTargetName функции InitializeSecurityContext.
Синтаксис
DSPARSE DWORD DsMakeSpnA(
[in] LPCSTR ServiceClass,
[in] LPCSTR ServiceName,
[in, optional] LPCSTR InstanceName,
[in] USHORT InstancePort,
[in, optional] LPCSTR Referrer,
[in, out] DWORD *pcSpnLength,
[out] LPSTR pszSpn
);
Параметры
[in] ServiceClass
Указатель на строку с константой, завершаемой значением NULL, которая указывает класс службы. Этот параметр может быть любой строкой, уникальной для этой службы; Либо имя протокола, например ldap, либо строковая форма GUID, допустимы.
[in] ServiceName
Указатель на строку, завершающую значение NULL, указывающую DNS-имя, имя NetBIOS или различающееся имя (DN). Этот параметр должен быть неnull.
Дополнительные сведения о том, какserviceName
[in, optional] InstanceName
Указатель на строку, завершающуюся значением NULL, которая указывает DNS-имя или IP-адрес узла для экземпляра службы.
Если
Если ServiceName указывает доменное имя DNS, имя записи DNS SRV или различающееся имя, например DN точки подключения службы, параметр InstanceName должен указать DNS или NetBIOS имя узла службы.
[in] InstancePort
Номер порта для экземпляра службы. Используйте 0 для порта по умолчанию. Если этот параметр равен нулю, имя субъекта-службы не включает номер порта.
[in, optional] Referrer
Указатель на строку с константой, завершаемой значением NULL, которая указывает DNS-имя узла, который дал ссылку на IP-адрес. Этот параметр игнорируется, если параметр ServiceName указывает IP-адрес.
[in, out] pcSpnLength
Указатель на переменную, содержащую длину в символах буфера, который получит новое созданное имя субъекта-службы. Это значение может быть 0, чтобы запросить окончательный размер буфера заранее.
Параметр pcSpnLength также получает фактическую длину созданного имени субъекта-службы, включая завершающий символ NULL.
[out] pszSpn
Указатель на строку, завершающуюся значением NULL, которая получает созданную имя субъекта-службы. Этот буфер должен быть длиной, указанной pcSpnLength. Параметр pszSpn может быть NULL запрашивать окончательный размер буфера заранее.
Возвращаемое значение
Если функция возвращает имя субъекта-службы, возвращаемое значение ERROR_SUCCESS. Если функция завершается ошибкой, возвращаемое значение может быть одним из следующих кодов ошибок.
Замечания
Формат имени субъекта-службы, созданного функцией dsMakeSpn, зависит от входных параметров. Существует два основных формата. Оба формата начинаются с строки ServiceClass
Создание имени субъекта-службы с "<ServiceClass>/><узла"
- Задайте параметру ServiceName DNS-имя хост-компьютера для экземпляра службы. Это главный компонент имени участника-службы.
- Задайте для параметров имя экземпляра
и для параметра NULL . -
Задайте для параметра InstancePort значение нулю. Если InstancePort ненулевое, имя субъекта-службы имеет следующий формат:
<service class>/<host>:<instance port>/<referrer>
Создание имени субъекта-службы с><ServiceClass /><узла:<InstancePort>"format
- Задайте параметру InstanceName DNS-имя хост-компьютера для экземпляра службы. Это компонент узла.
- Задайте параметру ServiceName строку, которая определяет экземпляр службы. Например, это может быть различающееся имя точки подключения службы для этого экземпляра службы.
- Задайте для параметра
ссылок значение NULL . -
Задайте для параметра InstancePort значение нулю. Если InstancePort ненулевое, имя субъекта-службы имеет следующий формат:
<service class>/<host>:<instance port>/<service name>
<service class>/<host>:<instance port>/<referrer>
Где компонент узла является строкой
Строковые параметры не могут включать символ косой черты (/), так как он используется для разделения компонентов имени участника-службы.
Заметка
Заголовок dsparse.h определяет DsMakeSpn как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows Vista |
минимальный поддерживаемый сервер | Windows Server 2008 |
целевая платформа | Виндоус |
заголовка | dsparse.h (include Ntdsapi.h) |
библиотеки |
Ntdsapi.lib |
DLL | Ntdsapi.dll |