Compartilhar via


Função NetServerGetInfo (lmserver.h)

A função NetServerGetInfo recupera informações de configuração atuais para o servidor especificado.

Sintaxe

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

Parâmetros

[in] servername

Ponteiro para uma cadeia de caracteres que especifica o nome do servidor remoto no qual a função deve ser executada. Se esse parâmetro for NULL, o computador local será usado.

[in] level

Especifica o nível de informações dos dados. Esse parâmetro pode usar um dos valores a seguir.

Valor Significado
100
Retornar o nome do servidor e as informações da plataforma. O parâmetro bufptr aponta para uma estrutura SERVER_INFO_100 .
101
Retornar o nome do servidor, o tipo e o software associado. O parâmetro bufptr aponta para uma estrutura SERVER_INFO_101 .
102
Retornar o nome do servidor, o tipo, o software associado e outros atributos. O parâmetro bufptr aponta para uma estrutura SERVER_INFO_102 .

[out] bufptr

Ponteiro para o buffer que recebe os dados. O formato desses dados depende do valor do parâmetro level .

Esse buffer é alocado pelo sistema e deve ser liberado usando a função NetApiBufferFree .

Valor retornado

Se a função for bem-sucedida, o valor retornado será NERR_Success.

Se a função falhar, o valor retornado poderá ser um dos códigos de erro a seguir.

Código de retorno Descrição
ERROR_ACCESS_DENIED
5
O usuário não tem acesso às informações solicitadas.
ERROR_INVALID_LEVEL
124
O valor especificado para o parâmetro level é inválido.
ERROR_INVALID_PARAMETER
87
O parâmetro especificado é inválido.
ERROR_NOT_ENOUGH_MEMORY
8
Memória insuficiente disponível.
NERR_ServerNotStarted
2114
O serviço de servidor não foi iniciado.

Comentários

Somente o grupo local Administradores ou Operadores de Servidor, ou aqueles com associação de grupo De impressão ou operador de servidor, pode executar com êxito a função NetServerGetInfo no nível 102. Nenhuma associação de grupo especial é necessária para chamadas de nível 100 ou nível 101.

Se você estiver programando para o Active Directory, poderá chamar determinados métodos ADSI (Active Directory Service Interface) para obter a mesma funcionalidade que você pode obter chamando as funções do servidor de gerenciamento de rede. Para obter mais informações, consulte IADsComputer.

Exemplos

O exemplo de código a seguir demonstra como recuperar informações de configuração atuais para um servidor usando uma chamada para a função NetServerGetInfo . O exemplo chama NetServerGetInfo, especificando o nível de informações 101 (SERVER_INFO_101). Se a chamada for bem-sucedida, o código tentará identificar o tipo de servidor. Por fim, o exemplo libera a memória alocada para o buffer de informações.

#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 com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho lmserver.h (inclua Lm.h)
Biblioteca Netapi32.lib
DLL Netapi32.dll

Confira também

NetRemoteComputerSupports

NetServerSetInfo

Funções de gerenciamento de rede

Visão geral do gerenciamento de rede

SERVER_INFO_100

SERVER_INFO_101

SERVER_INFO_102

Funções de servidor