DsGetDcNextA, fonction (dsgetdc.h)

La fonction DsGetDcNext récupère le contrôleur de domaine suivant dans une opération d’énumération de contrôleur de domaine.

Syntaxe

DSGETDCAPI DWORD DsGetDcNextA(
  [in]            HANDLE           GetDcContextHandle,
  [out, optional] PULONG           SockAddressCount,
  [out, optional] LPSOCKET_ADDRESS *SockAddresses,
  [out, optional] LPSTR            *DnsHostName
);

Paramètres

[in] GetDcContextHandle

Contient le handle de contexte d’énumération du contrôleur de domaine fourni par la fonction DsGetDcOpen .

[out, optional] SockAddressCount

Pointeur vers une valeur ULONG qui reçoit le nombre d’éléments dans le tableau SockAddresses . Si ce paramètre a la valeur NULL, les adresses de socket ne sont pas récupérées.

[out, optional] SockAddresses

Pointeur vers un tableau de structures SOCKET_ADDRESS qui reçoit les données d’adresse de socket pour le contrôleur de domaine. SockAddressCount reçoit le nombre d’éléments dans ce tableau.

Toutes les adresses retournées seront de type AF_INET ou AF_INET6. Le membre sin_port contient le port de l’enregistrement du serveur. Un port de 0 indique qu’aucun port n’est disponible à partir de DNS.

L’appelant doit libérer cette mémoire quand elle n’est plus nécessaire en appelant LocalFree.

Ce paramètre est ignoré si SockAddressCount a la valeur NULL.

[out, optional] DnsHostName

Pointeur vers un pointeur de chaîne qui reçoit le nom DNS du contrôleur de domaine. Ce paramètre reçoit null si aucun nom d’hôte n’est connu. L’appelant doit libérer cette mémoire quand elle n’est plus nécessaire en appelant NetApiBufferFree.

Valeur retournée

Retourne ERROR_SUCCESS en cas de réussite ou une erreur Win32 ou RPC dans le cas contraire. Les valeurs d’erreur possibles sont les suivantes.

Remarques

Pour réinitialiser l’énumération, fermez l’énumération actuelle en appelant DsGetDcClose , puis rouvrez l’énumération en appelant à nouveau DsGetDcOpen .

Le contrôleur de domaine retourné par DsGetDcNext ne sera pas un contrôleur de domaine en lecture seule (RODC), car ces contrôleurs de domaine enregistrent uniquement des enregistrements spécifiques au site et CName, et DsGetDcNext et DsGetDcOpen recherchent des enregistrements SRV DNS.

La procédure suivante montre comment obtenir une liste de contrôleurs de domaine complète à partir d’un ordinateur exécutant Windows Server 2008.

Pour obtenir une liste complète des contrôleurs de domaine

  1. Utilisez DsGetDcName pour obtenir un nom de contrôleur de domaine.
  2. Utilisez DsBind pour vous connecter à ce contrôleur de domaine.
  3. Appelez DsGetDomainControllerInfo avec InfoLevel 3 (DS_DOMAIN_CONTROLLER_INFO_3) pour obtenir la liste complète, y compris les contrôleurs de domaine.

Notes

L’en-tête dsgetdc.h définit DsGetDcNext en tant qu’alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. La combinaison de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista
Serveur minimal pris en charge Windows Server 2008
Plateforme cible Windows
En-tête dsgetdc.h
Bibliothèque Netapi32.lib
DLL Netapi32.dll

Voir aussi

Fonctions de service d’annuaire

DsGetDcClose

DsGetDcOpen

Énumération des contrôleurs de domaine

LocalFree

NetApiBufferFree

SOCKET_ADDRESS