共用方式為


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

如需如何使用 ServiceNameInstanceNameInstancePort 參數來撰寫 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

  1. ServiceName 參數設定為服務實例主計算機的 DNS 名稱。 這是SPN的主機組件。
  2. InstanceName參考 參數設定為 NULL
  3. InstancePort 參數設定為零。 如果 InstancePort 為非零,SPN 的格式如下:
    <service class>/<host>:<instance port>/<referrer>
    
附註 可複製的服務會使用此格式。
 

若要使用 「<ServiceClass>/<主機>產生 SPN:<InstancePort>」 格式

  1. InstanceName 參數設定為服務實例主計算機的 DNS 名稱。 這是主機組件。
  2. ServiceName 參數設定為識別服務實例的字串。 例如,它可以是這個服務實例之服務連接點的辨別名稱。
  3. 參考 參數設定為 NULL
  4. InstancePort 參數設定為零。 如果 InstancePort 為非零,SPN 的格式如下:
    <service class>/<host>:<instance port>/<service name>
    
只有當 ServiceName 參數指定服務主電腦的 IP 位址時,才會使用 Referrer 參數。 在此情況下,查閱者 指定將IP位址指定為轉介之電腦的 DNS 名稱。 SPN 的格式如下:
<service class>/<host>:<instance port>/<referrer>

如果 InstanceName 為 NULL,則主機組件為 InstanceName 字串或 ServiceName 字串,而 InstancePort 元件則為選擇性。

字串參數不能包含正斜線 (/) 字元,因為它用來分隔 SPN 的元件。

注意

dsparse.h 標頭會將 DsMakeSpn 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的 慣例。

要求

要求 價值
最低支援的用戶端 Windows Vista
支援的最低伺服器 Windows Server 2008
目標平臺 窗戶
標頭 dsparse.h (包括 Ntdsapi.h)
連結庫 Ntdsapi.lib
DLL Ntdsapi.dll

另請參閱

域控制器和復寫管理功能

InitializeSecurityContext