Функция NetServerGetInfo (lmserver.h)

Функция NetServerGetInfo извлекает сведения о текущей конфигурации для указанного сервера.

Синтаксис

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

Параметры

[in] servername

Указатель на строку, указывающую имя удаленного сервера, на котором выполняется функция. Если этот параметр имеет значение NULL, используется локальный компьютер.

[in] level

Указывает уровень информации о данных. Этот параметр может принимать одно из указанных ниже значений.

Значение Значение
100
Возвращает имя сервера и сведения о платформе. Параметр bufptr указывает на структуру SERVER_INFO_100 .
101
Возвращает имя сервера, тип и связанное программное обеспечение. Параметр bufptr указывает на структуру SERVER_INFO_101 .
102
Возвращает имя сервера, тип, связанное программное обеспечение и другие атрибуты. Параметр bufptr указывает на структуру SERVER_INFO_102 .

[out] bufptr

Указатель на буфер, который получает данные. Формат этих данных зависит от значения параметра level .

Этот буфер выделяется системой и должен быть освобожден с помощью функции NetApiBufferFree .

Возвращаемое значение

Если функция выполняется успешно, возвращаемое значение будет NERR_Success.

Если функция завершается сбоем, возвращаемое значение может быть одним из следующих кодов ошибок.

Код возврата Описание
ERROR_ACCESS_DENIED
5
У пользователя нет доступа к запрошенной информации.
ERROR_INVALID_LEVEL
124
Значение, указанное для параметра level , является недопустимым.
ERROR_INVALID_PARAMETER
87
Указанный параметр является недопустимым.
ERROR_NOT_ENOUGH_MEMORY
8
Недостаточно памяти.
NERR_ServerNotStarted
2114
Служба сервера не запущена.

Комментарии

На уровне 102 можно успешно выполнить функцию NetServerGetInfo только в локальной группе "Администраторы" или "Операторы сервера" или "Операторы сервера". Для звонков уровня 100 или 101 не требуется специальное членство в группах.

При программировании для Active Directory вы можете вызвать определенные методы интерфейса службы Active Directory (ADSI) для достижения тех же функциональных возможностей, которые можно достичь, вызвав функции сервера управления сетью. Дополнительные сведения см. в разделе IADsComputer.

Примеры

В следующем примере кода показано, как получить сведения о текущей конфигурации для сервера с помощью вызова функции NetServerGetInfo . Пример вызывает NetServerGetInfo, указывая уровень сведений 101 (SERVER_INFO_101). Если вызов завершается успешно, код пытается определить тип сервера. Наконец, образец освобождает память, выделенную для информационного буфера.

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

Требования

   
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header lmserver.h (включая Lm.h)
Библиотека Netapi32.lib
DLL Netapi32.dll

См. также раздел

NetRemoteComputerSupports

NetServerSetInfo

Функции управления сетью

Общие сведения об управлении сетью

SERVER_INFO_100

SERVER_INFO_101

SERVER_INFO_102

Функции сервера