共用方式為


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 不再需要記憶體時,必須釋放此記憶體。

如果 SockAddressCountNULL,則會忽略此參數。

[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 3 (DS_DOMAIN_CONTROLLER_INFO_3) 呼叫 DsGetDomainControllerInfo 以取得完整的清單,包括 RODC。

注意

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

規格需求

需求
最低支援的用戶端 Windows Vista
最低支援的伺服器 Windows Server 2008
目標平台 Windows
標頭 dsgetdc.h
程式庫 Netapi32.lib
Dll Netapi32.dll

另請參閱

目錄服務函式

DsGetDcClose

DsGetDcOpen

列舉域控制器

LocalFree

NetApiBufferFree

SOCKET_ADDRESS