DsMakeSpnA 函式 (dsarse.h)
DsMakeSpn 函式會建構可識別服務實例的服務主體名稱 (SPN)。
用戶端應用程式會使用此函式來撰寫 SPN,其用來驗證服務實例。 例如,用戶端可以在 InitializeSecurityContext 函式的 pszTargetName 參數中傳遞 SPN。
語法
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、InstanceName 和 InstancePort 參數來撰寫 SPN 的詳細資訊,請參閱下列一節。
[in, optional] InstanceName
常數 Null 終止字串的指標,指定服務實例之主機的 DNS 名稱或 IP 位址。
如果 serviceName 指定服務主電腦的 DNS 或 NetBIOS 名稱,InstanceName 參數必須 NULL。
如果 ServiceName 指定 DNS 功能變數名稱、DNS SRV 記錄的名稱或辨別名稱,例如服務連接點的 DN,InstanceName 參數必須指定服務主計算機的 DNS 或 NetBIOS 名稱。
[in] InstancePort
服務的實例埠號碼。 針對預設埠使用 0。 如果此參數為零,SPN 不會包含埠號碼。
[in, optional] Referrer
常數 Null 終止字串的指標,指定 IP 位址轉介之主機的 DNS 名稱。 除非 ServiceName 參數指定 IP 位址,否則會忽略此參數。
[in, out] pcSpnLength
變數的指標,其中包含將接收新建構 SPN 之緩衝區的長度,以字元為單位。 此值可以是 0,以事先要求最終緩衝區大小。
pcSpnLength 參數也會接收所建立 SPN 的實際長度,包括終止的 Null 字元。
[out] pszSpn
接收已建構 SPN 之 Null 終止字串的指標。 此緩衝區應該是 pcSpnLength所指定的長度。 pszSpn 參數可能會 NULL 事先要求最終緩衝區大小。
傳回值
如果函式傳回 SPN,則傳回值會 ERROR_SUCCESS。 如果函式失敗,傳回值可以是下列其中一個錯誤碼。
言論
DsMakeSpn 函式所產生的 SPN 格式取決於輸入參數。 有兩種基本格式。 這兩種格式都是以 ServiceClass 字串開頭,後面接著主計算機名稱和選擇性的 InstancePort 元件。
使用 「<ServiceClass>/<主機>」 格式產生 SPN
- 將 ServiceName 參數設定為服務實例主計算機的 DNS 名稱。 這是SPN的主機組件。
- 將 InstanceName 和 參考 參數設定為 NULL。
-
將 InstancePort 參數設定為零。 如果 InstancePort 為非零,SPN 的格式如下:
<service class>/<host>:<instance port>/<referrer>
若要使用 「<ServiceClass>/<主機>產生 SPN:<InstancePort>」 格式
- 將 InstanceName 參數設定為服務實例主計算機的 DNS 名稱。 這是主機組件。
- 將 ServiceName 參數設定為識別服務實例的字串。 例如,它可以是這個服務實例之服務連接點的辨別名稱。
- 將 參考 參數設定為 NULL。
-
將 InstancePort 參數設定為零。 如果 InstancePort 為非零,SPN 的格式如下:
<service class>/<host>:<instance port>/<service name>
<service class>/<host>:<instance port>/<referrer>
如果
字串參數不能包含正斜線 (/) 字元,因為它用來分隔 SPN 的元件。
注意
dsparse.h 標頭會將 DsMakeSpn 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows Vista |
支援的最低伺服器 | Windows Server 2008 |
目標平臺 | 窗戶 |
標頭 | dsparse.h (包括 Ntdsapi.h) |
連結庫 | Ntdsapi.lib |
DLL | Ntdsapi.dll |