Funzione NetServerGetInfo (lmserver.h)

La funzione NetServerGetInfo recupera le informazioni di configurazione correnti per il server specificato.

Sintassi

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

Parametri

[in] servername

Puntatore a una stringa che specifica il nome del server remoto in cui deve essere eseguita la funzione. Se questo parametro è NULL, viene utilizzato il computer locale.

[in] level

Specifica il livello di informazioni dei dati. Questo parametro può avere uno dei valori seguenti.

Valore Significato
100
Restituisce il nome del server e le informazioni sulla piattaforma. Il parametro bufptr punta a una struttura SERVER_INFO_100 .
101
Restituisce il nome del server, il tipo e il software associato. Il parametro bufptr punta a una struttura SERVER_INFO_101 .
102
Restituisce il nome del server, il tipo, il software associato e altri attributi. Il parametro bufptr punta a una struttura SERVER_INFO_102 .

[out] bufptr

Puntatore al buffer che riceve i dati. Il formato di questi dati dipende dal valore del parametro level .

Questo buffer viene allocato dal sistema e deve essere liberato usando la funzione NetApiBufferFree .

Valore restituito

Se la funzione ha esito positivo, il valore restituito viene NERR_Success.

Se la funzione ha esito negativo, il valore restituito può essere uno dei codici di errore seguenti.

Codice restituito Descrizione
ERROR_ACCESS_DENIED
5
L'utente non ha accesso alle informazioni richieste.
ERROR_INVALID_LEVEL
124
Il valore specificato per il parametro level non è valido.
ERROR_INVALID_PARAMETER
87
Il parametro specificato non è valido.
ERROR_NOT_ENOUGH_MEMORY
8
Memoria insufficiente disponibile.
NERR_ServerNotStarted
2114
Il servizio server non viene avviato.

Commenti

Solo il gruppo locale Administrators o Server Operators o quelli con appartenenza al gruppo Print o Server Operator può eseguire correttamente la funzione NetServerGetInfo al livello 102. Non è necessaria alcuna appartenenza speciale al gruppo per le chiamate di livello 100 o livello 101.

Se si esegue la programmazione per Active Directory, è possibile chiamare determinati metodi ADSI (Active Directory Service Interface) per ottenere la stessa funzionalità che è possibile ottenere chiamando le funzioni del server di gestione di rete. Per altre informazioni, vedere IADsComputer.

Esempio

Nell'esempio di codice seguente viene illustrato come recuperare le informazioni di configurazione correnti per un server usando una chiamata alla funzione NetServerGetInfo . L'esempio chiama NetServerGetInfo, specificando il livello di informazioni 101 (SERVER_INFO_101). Se la chiamata ha esito positivo, il codice tenta di identificare il tipo di server. Infine, l'esempio libera la memoria allocata per il buffer delle informazioni.

#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;
}

Requisiti

   
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione lmserver.h (include Lm.h)
Libreria Netapi32.lib
DLL Netapi32.dll

Vedi anche

NetRemoteComputerSupports

NetServerSetInfo

Funzioni di gestione di rete

Panoramica della gestione della rete

SERVER_INFO_100

SERVER_INFO_101

SERVER_INFO_102

Funzioni del server