DsGetDcNextA 函式 (dsgetdc.h)
DsGetDcNext 函式會擷取域控制器列舉作業中的下一個域控制器。
語法
DSGETDCAPI DWORD DsGetDcNextA(
[in] HANDLE GetDcContextHandle,
[out, optional] PULONG SockAddressCount,
[out, optional] LPSOCKET_ADDRESS *SockAddresses,
[out, optional] LPSTR *DnsHostName
);
參數
[in] GetDcContextHandle
包含 DsGetDcOpen 函式所提供的域控制器列舉內容句柄。
[out, optional] SockAddressCount
ULONG 值的指標,這個值會接收 SockAddresses 陣列中的元素數目。 如果此參數 NULL,則不會擷取套接字位址。
[out, optional] SockAddresses
SOCKET_ADDRESS 結構的陣列指標,這個數位會接收域控制器的套接字地址數據。 SockAddressCount 會接收此陣列中的元素數目。
所有傳回的位址都會是類型為 AF_INET 或 AF_INET6。 sin_port 成員包含來自伺服器記錄的埠。 埠 0 表示 DNS 沒有可用的埠。
呼叫者在呼叫localFree 不再需要此記憶體時,呼叫者必須釋放此記憶體。
如果 SockAddressCount
[out, optional] DnsHostName
接收域控制器 DNS 名稱之字串指標的指標。 如果不知道主機名,此參數會收到 NULL。 呼叫者在呼叫 NetApiBufferFree 不再需要此記憶體時,必須釋放此記憶體。
傳回值
如果成功或 Win32 或 RPC 錯誤,則傳回 ERROR_SUCCESS 否則傳回 。 可能的錯誤值包括下列專案。
言論
若要重設列舉,請藉由呼叫 DsGetDcClose 關閉目前的列舉,然後再次呼叫 DsGetDcOpen 重新開啟列舉。
DsGetDcNext 傳回的 DC 不會是只讀 DC (RODC),因為這些 DC 只會註冊網站特定和 CName 記錄,而且 DsGetDcNext 和 DsGetDcOpen 尋找 DNS SRV 記錄。
下列程式示範如何從執行 Windows Server 2008 的電腦取得完整的 DC 清單。
若要取得域控制器的完整清單
- 使用 DsGetDcName 來取得域控制器名稱。
- 使用 DsBind 連線到該域控制器。
- 使用 InfoLevel 3DS_DOMAIN_CONTROLLER_INFO_3呼叫 DsGetDomainControllerInfo 以取得完整清單,包括 RODC。
注意
dsgetdc.h 標頭會將 DsGetDcNext 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows Vista |
支援的最低伺服器 | Windows Server 2008 |
目標平臺 | 窗戶 |
標頭 | dsgetdc.h |
連結庫 | Netapi32.lib |
DLL | Netapi32.dll |