Función NetServerGetInfo (lmserver.h)

La función NetServerGetInfo recupera la información de configuración actual del servidor especificado.

Sintaxis

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

Parámetros

[in] servername

Puntero a una cadena que especifica el nombre del servidor remoto en el que se va a ejecutar la función. Si este parámetro es NULL, se usa el equipo local.

[in] level

Especifica el nivel de información de los datos. Este parámetro puede ser uno de los valores siguientes.

Valor Significado
100
Devuelve el nombre del servidor y la información de la plataforma. El parámetro bufptr apunta a una estructura SERVER_INFO_100 .
101
Devuelve el nombre del servidor, el tipo y el software asociado. El parámetro bufptr apunta a una estructura de SERVER_INFO_101 .
102
Devuelve el nombre del servidor, el tipo, el software asociado y otros atributos. El parámetro bufptr apunta a una estructura SERVER_INFO_102 .

[out] bufptr

Puntero al búfer que recibe los datos. El formato de estos datos depende del valor del parámetro level .

El sistema asigna este búfer y debe liberarse mediante la función NetApiBufferFree .

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto se NERR_Success.

Si se produce un error en la función, el valor devuelto puede ser uno de los siguientes códigos de error.

Código devuelto Descripción
ERROR_ACCESS_DENIED
5
El usuario no tiene acceso a la información pedida.
ERROR_INVALID_LEVEL
124
El valor especificado para el parámetro level no es válido.
ERROR_INVALID_PARAMETER
87
El parámetro especificado no es válido.
ERROR_NOT_ENOUGH_MEMORY
8
Memoria insuficiente disponible.
NERR_ServerNotStarted
2114
El servicio de servidor no se inicia.

Comentarios

Solo los grupos locales Administradores o Operadores de servidor, o los que tienen pertenencia al grupo De operadores de impresión o servidor, pueden ejecutar correctamente la función NetServerGetInfo en el nivel 102. No se requiere ninguna pertenencia especial a grupos para las llamadas de nivel 100 o nivel 101.

Si está programando para Active Directory, puede llamar a determinados métodos de interfaz de servicio de Active Directory (ADSI) para lograr la misma funcionalidad que puede lograr llamando a las funciones del servidor de administración de red. Para obtener más información, consulte IADsComputer.

Ejemplos

En el ejemplo de código siguiente se muestra cómo recuperar la información de configuración actual de un servidor mediante una llamada a la función NetServerGetInfo . El ejemplo llama a NetServerGetInfo, especificando el nivel de información 101 (SERVER_INFO_101). Si la llamada se realiza correctamente, el código intenta identificar el tipo de servidor. Por último, el ejemplo libera la memoria asignada para el búfer de información.

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

Requisitos

   
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado lmserver.h (include Lm.h)
Library Netapi32.lib
Archivo DLL Netapi32.dll

Consulte también

NetRemoteComputerSupports

NetServerSetInfo

Funciones de administración de red

Introducción a la administración de redes

SERVER_INFO_100

SERVER_INFO_101

SERVER_INFO_102

Funciones del servidor