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


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

Предоставляет общий доступ к ресурсу сервера.

Синтаксис

NET_API_STATUS NET_API_FUNCTION NetShareAdd(
  [in]  LMSTR   servername,
  [in]  DWORD   level,
  [in]  LPBYTE  buf,
  [out] LPDWORD parm_err
);

Параметры

[in] servername

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

[in] level

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

Значение Значение
2
Указывает сведения об общем ресурсе, включая имя ресурса, тип и разрешения, а также количество подключений. Параметр buf указывает на SHARE_INFO_2 структуру.
502
Указывает сведения об общем ресурсе, включая имя ресурса, тип и разрешения, количество подключений и другие важные сведения. Параметр buf указывает на SHARE_INFO_502 структуру.
503
Указывает сведения об общем ресурсе, включая имя ресурса, тип и разрешения, количество подключений и другие важные сведения. Параметр buf указывает на структуру SHARE_INFO_503 .

[in] buf

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

[out] parm_err

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

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

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

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

Код возврата Описание
ERROR_ACCESS_DENIED
Пользователь не имеет доступа к запрошенной информации.
ERROR_INVALID_LEVEL
Недопустимое значение, указанное для параметра level .
ERROR_INVALID_NAME
Недопустимый символ или имя файловой системы.
ERROR_INVALID_PARAMETER
Указанный параметр недопустим.
NERR_DuplicateShare
Имя общей папки уже используется на этом сервере.
NERR_RedirectedPath
Операция недопустима для перенаправленного ресурса. Указанное имя устройства назначается общему ресурсу.
NERR_UnknownDevDir
Устройство или каталог не существуют.

Комментарии

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

Только члены локальной группы "Администраторы", "Системные операторы" или "Опытные пользователи" могут добавлять общие папки с помощью вызова функции NetShareAdd . Оператор печати может добавлять общие папки принтера.

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

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

Примеры

В следующем примере кода показано, как предоставить общий доступ к сетевому ресурсу с помощью вызова функции NetShareAdd . Пример кода заполняет элементы структуры SHARE_INFO_2 и вызывает NetShareAdd, указывая уровень сведений 2. Пароль не требуется, так как эти платформы не поддерживают безопасность на уровне общего доступа.

#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
#include <stdio.h>
#include <lm.h>
#pragma comment(lib, "Netapi32.lib")

void wmain( int argc, TCHAR *argv[ ])
{
   NET_API_STATUS res;
   SHARE_INFO_2 p;
   DWORD parm_err = 0;

   if(argc<2)
      printf("Usage: NetShareAdd server\n");
   else
   {
      //
      // Fill in the SHARE_INFO_2 structure.
      //
      p.shi2_netname = TEXT("TESTSHARE");    
      p.shi2_type = STYPE_DISKTREE; // disk drive
      p.shi2_remark = TEXT("TESTSHARE to test NetShareAdd");
      p.shi2_permissions = 0;    
      p.shi2_max_uses = 4;
      p.shi2_current_uses = 0;    
      p.shi2_path = TEXT("C:\\");
      p.shi2_passwd = NULL; // no password
      //
      // Call the NetShareAdd function,
      //  specifying level 2.
      //
      res=NetShareAdd(argv[1], 2, (LPBYTE) &p, &parm_err);
      //
      // If the call succeeds, inform the user.
      //
      if(res==0)
         printf("Share created.\n");
      
      // Otherwise, print an error,
      //  and identify the parameter in error.
      //
      else
         printf("Error: %u\tparmerr=%u\n", res, parm_err);
   }
   return;
}

Требования

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

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

NetServerTransportAddEx

NetShareDel

NetShareDelEx

NetShareSetInfo

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

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

Функции общих сетевых файлов

SHARE_INFO_2

SHARE_INFO_502

SHARE_INFO_503