NetServerGetInfo, fonction (lmserver.h)

La fonction NetServerGetInfo récupère les informations de configuration actuelles pour le serveur spécifié.

Syntaxe

NET_API_STATUS NET_API_FUNCTION NetServerGetInfo(
  [in]  LMSTR  servername,
  [in]  DWORD  level,
  [out] LPBYTE *bufptr
);

Paramètres

[in] servername

Pointeur vers une chaîne qui spécifie le nom du serveur distant sur lequel la fonction doit s’exécuter. Si ce paramètre a la valeur NULL, l’ordinateur local est utilisé.

[in] level

Spécifie le niveau d’informations des données. Ce paramètre peut prendre les valeurs suivantes.

Valeur Signification
100
Retourne le nom du serveur et les informations de plateforme. Le paramètre bufptr pointe vers une structure SERVER_INFO_100 .
101
Retourne le nom du serveur, le type et le logiciel associé. Le paramètre bufptr pointe vers une structure SERVER_INFO_101 .
102
Retourne le nom du serveur, le type, le logiciel associé et d’autres attributs. Le paramètre bufptr pointe vers une structure SERVER_INFO_102 .

[out] bufptr

Pointeur vers la mémoire tampon qui reçoit les données. Le format de ces données dépend de la valeur du paramètre level .

Cette mémoire tampon est allouée par le système et doit être libérée à l’aide de la fonction NetApiBufferFree .

Valeur retournée

Si la fonction réussit, la valeur de retour est NERR_Success.

Si la fonction échoue, la valeur de retour peut être l’un des codes d’erreur suivants.

Code de retour Description
ERROR_ACCESS_DENIED
5
L’utilisateur n’a pas accès aux informations demandées.
ERROR_INVALID_LEVEL
124
La valeur spécifiée pour le paramètre level n’est pas valide.
ERROR_INVALID_PARAMETER
87
Le paramètre spécifié n’est pas valide.
ERROR_NOT_ENOUGH_MEMORY
8
La mémoire disponible est insuffisante.
NERR_ServerNotStarted
2114
Le service serveur n’est pas démarré.

Notes

Seuls le groupe local Administrateurs ou Opérateurs de serveur, ou ceux qui ont une appartenance au groupe d’opérateurs de serveur ou d’impression, peut exécuter correctement la fonction NetServerGetInfo au niveau 102. Aucune appartenance de groupe spéciale n’est requise pour les appels de niveau 100 ou 101.

Si vous programmez pour Active Directory, vous pouvez peut-être appeler certaines méthodes ADSI (Active Directory Service Interface) pour obtenir les mêmes fonctionnalités que celles que vous pouvez obtenir en appelant les fonctions du serveur d’administration réseau. Pour plus d’informations, consultez IADsComputer.

Exemples

L’exemple de code suivant montre comment récupérer les informations de configuration actuelles d’un serveur à l’aide d’un appel à la fonction NetServerGetInfo . L’exemple appelle NetServerGetInfo, en spécifiant le niveau d’informations 101 (SERVER_INFO_101). Si l’appel réussit, le code tente d’identifier le type de serveur. Enfin, l’exemple libère la mémoire allouée pour la mémoire tampon d’informations.

#ifndef UNICODE
#define UNICODE
#endif
#pragma comment(lib, "netapi32.lib")

#include <stdio.h>
#include <windows.h> 
#include <lm.h>

int wmain(int argc, wchar_t *argv[])
{
   DWORD dwLevel = 101;
   LPSERVER_INFO_101 pBuf = NULL;
   NET_API_STATUS nStatus;
   LPTSTR pszServerName = NULL;

   if (argc > 2)
   {
      fwprintf(stderr, L"Usage: %s [\\\\ServerName]\n", argv[0]);
      exit(1);
   }
   // The server is not the default local computer.
   //
   if (argc == 2)
      pszServerName = (LPTSTR) argv[1];
   //
   // Call the NetServerGetInfo function, specifying level 101.
   //
   nStatus = NetServerGetInfo(pszServerName,
                              dwLevel,
                              (LPBYTE *)&pBuf);
   //
   // If the call succeeds,
   //
   if (nStatus == NERR_Success)
   {
      //
      // Check for the type of server.
      //
      if ((pBuf->sv101_type & SV_TYPE_DOMAIN_CTRL) ||
         (pBuf->sv101_type & SV_TYPE_DOMAIN_BAKCTRL) ||
         (pBuf->sv101_type & SV_TYPE_SERVER_NT))
         printf("This is a server\n");
      else
         printf("This is a workstation\n");
   }
   //
   // Otherwise, print the system error.
   //
   else
      fprintf(stderr, "A system error has occurred: %d\n", nStatus);
   //
   // Free the allocated memory.
   //
   if (pBuf != NULL)
      NetApiBufferFree(pBuf);

   return 0;
}

Spécifications

   
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête lmserver.h (include Lm.h)
Bibliothèque Netapi32.lib
DLL Netapi32.dll

Voir aussi

NetRemoteComputerSupports

NetServerSetInfo

Fonctions de gestion réseau

Vue d’ensemble de la gestion du réseau

SERVER_INFO_100

SERVER_INFO_101

SERVER_INFO_102

Fonctions serveur