Freigeben über


NetServerGetInfo-Funktion (lmserver.h)

Die NetServerGetInfo-Funktion ruft aktuelle Konfigurationsinformationen für den angegebenen Server ab.

Syntax

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

Parameter

[in] servername

Zeiger auf eine Zeichenfolge, die den Namen des Remoteservers angibt, auf dem die Funktion ausgeführt werden soll. Wenn dieser Parameter NULL ist, wird der lokale Computer verwendet.

[in] level

Gibt die Informationsebene der Daten an. Dieser Parameter kann einen der folgenden Werte annehmen.

Wert Bedeutung
100
Gibt den Servernamen und die Plattforminformationen zurück. Der bufptr-Parameter verweist auf eine SERVER_INFO_100-Struktur .
101
Gibt den Servernamen, den Typ und die zugehörige Software zurück. Der bufptr-Parameter verweist auf eine SERVER_INFO_101-Struktur .
102
Gibt den Servernamen, den Typ, die zugeordnete Software und andere Attribute zurück. Der parameter bufptr verweist auf eine SERVER_INFO_102-Struktur .

[out] bufptr

Zeiger auf den Puffer, der die Daten empfängt. Das Format dieser Daten hängt vom Wert des level-Parameters ab.

Dieser Puffer wird vom System zugeordnet und muss mithilfe der NetApiBufferFree-Funktion freigegeben werden.

Rückgabewert

Wenn die Funktion erfolgreich ist, wird der Rückgabewert NERR_Success.

Wenn die Funktion fehlschlägt, kann der Rückgabewert einer der folgenden Fehlercodes sein.

Rückgabecode Beschreibung
ERROR_ACCESS_DENIED
5
Der Benutzer besitzt keinen Zugriff auf die angeforderten Informationen.
ERROR_INVALID_LEVEL
124
Der für den level-Parameter angegebene Wert ist ungültig.
ERROR_INVALID_PARAMETER
87
Der angegebene Parameter ist ungültig.
ERROR_NOT_ENOUGH_MEMORY
8
Nicht genügend Arbeitsspeicher ist verfügbar.
NERR_ServerNotStarted
2114
Der Serverdienst wird nicht gestartet.

Hinweise

Nur die lokale Gruppe "Administratoren" oder "Serveroperatoren" kann die NetServerGetInfo-Funktion auf Ebene 102 erfolgreich ausführen. Für Anrufe der Stufe 100 oder Stufe 101 ist keine spezielle Gruppenmitgliedschaft erforderlich.

Wenn Sie für Active Directory programmieren, können Sie möglicherweise bestimmte ADSI-Methoden (Active Directory Service Interface) aufrufen, um die gleiche Funktionalität zu erreichen, die Sie durch aufrufen der Netzwerkverwaltungsserverfunktionen erreichen können. Weitere Informationen finden Sie unter IADsComputer.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie aktuelle Konfigurationsinformationen für einen Server mithilfe eines Aufrufs der NetServerGetInfo-Funktion abgerufen werden. Im Beispiel wird NetServerGetInfo aufgerufen, wobei die Informationsebene 101 (SERVER_INFO_101) angegeben wird. Wenn der Aufruf erfolgreich ist, versucht der Code, den Servertyp zu identifizieren. Schließlich gibt das Beispiel den für den Informationspuffer zugeordneten Arbeitsspeicher frei.

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

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile lmserver.h (lm.h einschließen)
Bibliothek Netapi32.lib
DLL Netapi32.dll

Weitere Informationen

NetRemoteComputerSupports

NetServerSetInfo

Netzwerkverwaltungsfunktionen

Übersicht über die Netzwerkverwaltung

SERVER_INFO_100

SERVER_INFO_101

SERVER_INFO_102

Serverfunktionen