DsGetSpnA 函式 (ntdsapi.h)
DsGetSpn 函式會建構一或多個服務主體名稱的陣列。 陣列中的每個名稱都會識別服務的實例。 這些 SPN 可以使用 DsWriteAccountSpn 函式向目錄服務註冊。
語法
NTDSAPI DWORD DsGetSpnA(
[in] DS_SPN_NAME_TYPE ServiceType,
[in] LPCSTR ServiceClass,
[in, optional] LPCSTR ServiceName,
[in] USHORT InstancePort,
[in] USHORT cInstanceNames,
[in, optional] LPCSTR *pInstanceNames,
[in, optional] const USHORT *pInstancePorts,
[out] DWORD *pcSpn,
[out] LPSTR **prpszSpn
);
參數
[in] ServiceType
識別要撰寫的 SPN 格式。 ServiceType 參數可以有下列其中一個值。
DS_SPN_DNS_HOST、DS_SPN_DN_HOST、DS_SPN_NB_HOST
SPN 的格式如下。
ServiceClass/ InstanceName: InstancePort
ServiceName 參數必須 NULL。 這是主機型服務的 SPN 格式,可提供其主計算機所識別的服務。 InstancePort 元件是選擇性的。
DS_SPN_DOMAIN,DS_SPN_NB_DOMAIN
SPN 的格式如下。
ServiceClass/ InstanceName: InstancePort/ ServiceName
ServiceName 參數必須是網域的 DNS 名稱或 DN。 此格式用於提供服務給指定網域的可複製服務。
DS_SPN_SERVICE
SPN 的格式如下。
ServiceClass/ InstanceName: InstancePort/ ServiceName
ServiceName 參數必須是識別服務實例的正式 DN 或 DNS 名稱。 例如,它可以是SRV記錄的 DNS 名稱,或此服務實例的服務連接點辨別名稱。
[in] ServiceClass
指定服務類別之常數 Null 終止字串的指標;例如 HTTP。 一般而言,這可以是服務唯一的任何字串。
[in, optional] ServiceName
常數 Null 終止字串的指標,指定服務的 DNS 名稱或辨別名稱(DN)。 主機型服務不需要 ServiceName。 如需詳細資訊,請參閱 ServiceType 參數的描述,以取得 ServiceName的可能值。
[in] InstancePort
指定服務實例的埠號碼。 如果此值為零,SPN 不會包含埠號碼。
[in] cInstanceNames
指定 pInstanceNames 和 pInstancePorts 陣列中的元素數目。 如果這個值不是零,
[in, optional] pInstanceNames
指定額外實例名稱的 Null 終止字串陣列指標(不適用於主機名)。 如果 cInstanceNames 為零,則會忽略此參數。 在此情況下,如果指定 DS_SPN_NB_HOST 或 DS_SPN_NB_DOMAIN,SPN InstanceName 元件預設為本機計算機的完整 DNS 名稱或 NetBIOS 名稱。
[in, optional] pInstancePorts
額外實例埠陣列的指標。 如果這個值不是非NULL,則必須指向 cInstanceNames 埠號碼的陣列。 如果此值 NULL,則 SPN 不包含埠號碼。 如果 cInstanceNames 為零,則會忽略此參數。
[out] pcSpn
接收 prpszSpn
[out] prpszSpn
接收SPN陣列指標之變數的指標。 此陣列必須使用 DsFreeSpnArray釋放。
傳回值
如果函式傳回 SPN 的陣列,則傳回值會 ERROR_SUCCESS。
如果函式失敗,傳回值可以是下列其中一個錯誤碼。
言論
為在多部主計算機上執行的複寫服務實例建立SPN
- 將 cInstanceNames 設定為實例數目。
- 在 pInstanceNames 陣列中指定主電腦的名稱。
為在相同主計算機上執行的多個服務實例建立SPN
- 將 cInstanceNames 設定為實例數目。
- 將 pInstanceNames 陣列中的每個項目設定為主電腦的 DNS 名稱。
- 使用 pInstancePorts 參數,為每個實例指定唯一埠號碼陣列,以釐清 SPN。
具有適當許可權的應用程式,通常是網域系統管理員,可以呼叫 DsWriteAccountSpn 函式,在服務執行所在的使用者或計算機帳戶上註冊一或多個 SPN。 用戶端接著可以使用SPN來驗證服務。
注意
ntdsapi.h 標頭會將 DsGetSpn 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows Vista |
支援的最低伺服器 | Windows Server 2008 |
目標平臺 | 窗戶 |
標頭 | ntdsapi.h |
連結庫 | Ntdsapi.lib |
DLL | Ntdsapi.dll |