Поделиться через


Функция NetShareGetInfo (lmshare.h)

Извлекает сведения о конкретном общем ресурсе на сервере.

Синтаксис

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

Параметры

[in] servername

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

[in] netname

Указатель на строку, указывающую имя общей папки, для которой возвращаются сведения.

[in] level

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

Значение Значение
0
Возвращает имя общей папки. Параметр bufptr указывает на структуру SHARE_INFO_0 .
1
Возвращает сведения об общем ресурсе, включая имя и тип ресурса, а также комментарий, связанный с ресурсом. Параметр bufptr указывает на структуру SHARE_INFO_1 .
2
Возвращает сведения об общем ресурсе, включая имя ресурса, тип и разрешения, пароль и количество подключений. Параметр bufptr указывает на структуру SHARE_INFO_2 .
501
Возвращает имя и тип ресурса, а также комментарий, связанный с ресурсом. Параметр bufptr указывает на структуру SHARE_INFO_501 .
502
Возвращает сведения об общем ресурсе, включая имя ресурса, тип и разрешения, количество подключений и другие важные сведения. Параметр bufptr указывает на структуру SHARE_INFO_502 .
503
Указывает сведения о общем ресурсе, включая имя ресурса, тип и разрешения, количество подключений и другую соответствующую информацию. Параметр buf указывает на структуру SHARE_INFO_503 . Если элементом shi503_servername этой структуры является "*", имя сервера не настроено.

Windows Server 2003 и Windows XP: Этот уровень информации не поддерживается.

1005
Возвращает значение, указывающее, является ли общая папка корневым томом в структуре дерева Dfs. Параметр bufptr указывает на структуру SHARE_INFO_1005 .

[out] bufptr

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

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

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

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

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

Код возврата Описание
ERROR_ACCESS_DENIED
У пользователя нет доступа к запрошенной информации.
ERROR_INVALID_LEVEL
Значение, указанное для параметра level , является недопустимым.
ERROR_INVALID_PARAMETER
Указанный параметр недопустим.
ERROR_NOT_ENOUGH_MEMORY
Недостаточно памяти.
NERR_NetNameNotFound
Имя общей папки не существует.

Комментарии

Эта функция применяется только к общим папкам SMB. Для других типов общих папок, таких как общие папки распределенной файловой системы (DFS) или WebDAV, используйте функции windows Networking (WNet), которые поддерживают все типы общих папок.

Для интерактивных пользователей (пользователей, которые вошли в систему локально на компьютере) для выполнения функции NetShareGetInfo не требуется специальное членство в группах. Для неинтерактивных пользователей для успешного выполнения функции NetShareEnum на уровнях 2, 502 и 503 требуется членство в группе Администратор, Power User, Оператор печати или Оператор сервера. Для звонков уровня 0 или 1 не требуется участие в специальных группах.

Windows Server 2003 и Windows XP: Для всех пользователей для успешного выполнения функции NetShareGetInfo на уровнях 2 и 502 требуется членство в группе "Администратор", "Power User", "Оператор печати" или "Оператор сервера".

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

Если для параметра уровня задано значение 503, удаленный сервер, указанный в shi503_servername член структуры SHARE_INFO_503 , должен быть привязан к транспортному протоколу с помощью функции NetServerTransportAddEx . В вызове NetServerTransportAddEx для параметра level должно быть указано значение 2 или 3, а в структуре SERVER_TRANSPORT_INFO_2 транспортного протокола должен быть указан флаг SVTI2_SCOPED_NAME.

Примеры

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

#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
#include <stdio.h>
#include <lm.h>

#pragma comment(lib, "Netapi32.lib")
#pragma comment(lib, "Advapi32.lib")

void wmain( int argc, TCHAR *lpszArgv[ ])
{
   PSHARE_INFO_502 BufPtr;
   NET_API_STATUS res;
   LPTSTR   lpszServer = NULL, lpszShare;
   //
   // Check command line arguments.
   //
   switch(argc)
   {
   case 3:
      lpszServer = lpszArgv[2];
   case 2:
      lpszShare = lpszArgv[1];
      break;
   default:
      printf("Usage: NetShareGetInfo sharename <servername>\n");
      return;
   }
   //
   // Call the NetShareGetInfo function, specifying level 502.
   //
   if((res = NetShareGetInfo (lpszServer,lpszShare,502,(LPBYTE *) &BufPtr)) == ERROR_SUCCESS)
   {
      //
      // Print the retrieved data.
      //
      printf("%S\t%S\t%u\n",BufPtr->shi502_netname, BufPtr->shi502_path, BufPtr->shi502_current_uses);
      //
      // Validate the value of the 
      //  shi502_security_descriptor member.
      //
      if (IsValidSecurityDescriptor(BufPtr->shi502_security_descriptor))
         printf("It has a valid Security Descriptor.\n");
      else
         printf("It does not have a valid Security Descriptor.\n");
      //
      // Free the allocated memory.
      //
      NetApiBufferFree(BufPtr);
   }
   else 
      printf("Error: %ld\n",res);
   return;
}

Требования

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

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

NetServerTransportAddEx

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

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

Функции общего сетевого ресурса

SECURITY_DESCRIPTOR

SHARE_INFO_0

SHARE_INFO_1

SHARE_INFO_1005

SHARE_INFO_2

SHARE_INFO_501

SHARE_INFO_502

SHARE_INFO_503