Функция 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
Указывает уровень информации о данных. Этот параметр может принимать одно из указанных ниже значений.
Значение | Значение |
---|---|
|
Возвращает имя сервера и сведения о платформе. Параметр bufptr указывает на структуру SERVER_INFO_100 . |
|
Возвращает имя сервера, тип и связанное программное обеспечение. Параметр bufptr указывает на структуру SERVER_INFO_101 . |
|
Возвращает имя сервера, тип, связанное программное обеспечение и другие атрибуты. Параметр bufptr указывает на структуру SERVER_INFO_102 . |
[out] bufptr
Указатель на буфер, который получает данные. Формат этих данных зависит от значения параметра level .
Этот буфер выделяется системой и должен быть освобожден с помощью функции NetApiBufferFree .
Возвращаемое значение
Если функция выполняется успешно, возвращаемое значение будет NERR_Success.
Если функция завершается сбоем, возвращаемое значение может быть одним из следующих кодов ошибок.
Код возврата | Описание |
---|---|
|
У пользователя нет доступа к запрошенной информации. |
|
Значение, указанное для параметра level , является недопустимым. |
|
Указанный параметр является недопустимым. |
|
Недостаточно памяти. |
|
Служба сервера не запущена. |
Комментарии
На уровне 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 |