共用方式為


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_INETAF_INET6sin_port 成員包含來自伺服器記錄的埠。 埠 0 表示 DNS 沒有可用的埠。

呼叫者在呼叫localFree 不再需要此記憶體時,呼叫者必須釋放此記憶體。

如果 SockAddressCount NULL,則會忽略此參數。

[out, optional] DnsHostName

接收域控制器 DNS 名稱之字串指標的指標。 如果不知道主機名,此參數會收到 NULL。 呼叫者在呼叫 NetApiBufferFree 不再需要此記憶體時,必須釋放此記憶體。

傳回值

如果成功或 Win32 或 RPC 錯誤,則傳回 ERROR_SUCCESS 否則傳回 。 可能的錯誤值包括下列專案。

言論

若要重設列舉,請藉由呼叫 DsGetDcClose 關閉目前的列舉,然後再次呼叫 DsGetDcOpen 重新開啟列舉。

DsGetDcNext 傳回的 DC 不會是只讀 DC (RODC),因為這些 DC 只會註冊網站特定和 CName 記錄,而且 DsGetDcNextDsGetDcOpen 尋找 DNS SRV 記錄。

下列程式示範如何從執行 Windows Server 2008 的電腦取得完整的 DC 清單。

若要取得域控制器的完整清單

  1. 使用 DsGetDcName 來取得域控制器名稱。
  2. 使用 DsBind 連線到該域控制器。
  3. 使用 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

另請參閱

Directory Service Functions

DsGetDcClose

DsGetDcOpen

列舉域控制器

LocalFree

NetApiBufferFree

SOCKET_ADDRESS