Funzione DsMakeSpnA (dsparse.h)
La funzione DsMakeSpn
Un'applicazione client usa questa funzione per comporre un nome SPN, che usa per autenticare l'istanza del servizio. Ad esempio, il client può passare un nome SPN nel parametro pszTargetName della funzione InitializeSecurityContext.
Sintassi
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
);
Parametri
[in] ServiceClass
Puntatore a una stringa con terminazione Null costante che specifica la classe del servizio. Questo parametro può essere qualsiasi stringa univoca per tale servizio; Il nome del protocollo, ad esempio ldap o il formato stringa di un GUID, sono accettabili.
[in] ServiceName
Puntatore a una stringa costante con terminazione Null che specifica il nome DNS, il nome NetBIOS o il nome distinto (DN). Questo parametro deve essere diverso daNULL.
Per altre informazioni sul modo in cui i parametri ServiceName, InstanceName e Instance Port vengono usati per comporre un nome SPN, vedere la sezione Note seguenti.
[in, optional] InstanceName
Puntatore a una stringa costante con terminazione Null che specifica il nome DNS o l'indirizzo IP dell'host per un'istanza del servizio.
Se
Se
[in] InstancePort
Numero di porta per un'istanza del servizio. Usare 0 per la porta predefinita. Se questo parametro è zero, il nome SPN non include un numero di porta.
[in, optional] Referrer
Puntatore a una stringa costante con terminazione Null che specifica il nome DNS dell'host che ha fornito una segnalazione di indirizzo IP. Questo parametro viene ignorato a meno che il parametro NomeServizio non specifichi un indirizzo IP.
[in, out] pcSpnLength
Puntatore a una variabile che contiene la lunghezza, in caratteri, del buffer che riceverà il nuovo NOME SPN costruito. Questo valore può essere 0 per richiedere in anticipo la dimensione finale del buffer.
Il parametro pcSpnLength riceve anche la lunghezza effettiva del nome SPN creato, incluso il carattere Null di terminazione.
[out] pszSpn
Puntatore a una stringa con terminazione Null che riceve il nome SPN costruito. Questo buffer deve essere la lunghezza specificata da pcSpnLength. Il parametro pszSpn può essere NULL per richiedere in anticipo la dimensione finale del buffer.
Valore restituito
Se la funzione restituisce un nome SPN, il valore restituito è ERROR_SUCCESS. Se la funzione ha esito negativo, il valore restituito può essere uno dei codici di errore seguenti.
Osservazioni
Il formato del nome SPN prodotto dalla funzione DsMakeSpn
Per produrre un nome SPN con il formato "<ServiceClass>/<host>"
- Impostare il parametro
ServiceName sul nome DNS del computer host per l'istanza del servizio. Si tratta del componente host del nome SPN. - Impostare i parametri InstanceName
e Referrer suNULL . -
Impostare il parametro InstancePort
su zero. Se InstancePort è diverso da zero, il nome SPN ha il formato seguente: <service class>/<host>:<instance port>/<referrer>
Per produrre un nome SPN con il formato "<ServiceClass>/<host>:<InstancePort>" format
- Impostare il parametro InstanceName sul nome DNS del computer host per l'istanza del servizio. Si tratta del componente host.
- Impostare il parametro
ServiceName su una stringa che identifica un'istanza del servizio. Ad esempio, potrebbe essere il nome distinto del punto di connessione del servizio per questa istanza del servizio. - Impostare il parametro referrer
su NULL . -
Impostare il parametro InstancePort
su zero. Se InstancePort è diverso da zero, il nome SPN ha il formato seguente: <service class>/<host>:<instance port>/<service name>
<service class>/<host>:<instance port>/<referrer>
dove il componente host è la stringa InstanceName o la stringa ServiceName se InstanceName è NULLe il componente InstancePort è facoltativo.
I parametri stringa non possono includere il carattere barra (/), perché viene usato per separare i componenti del nome SPN.
Nota
L'intestazione dsparse.h definisce DsMakeSpn come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows Vista |
server minimo supportato | Windows Server 2008 |
piattaforma di destinazione | Finestre |
intestazione |
dsparse.h (include Ntdsapi.h) |
libreria |
Ntdsapi.lib |
dll | Ntdsapi.dll |