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


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

Задает параметры общего ресурса.

Синтаксис

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

Параметры

[in] servername

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

[in] netname

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

[in] level

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

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

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

1004
Указывает комментарий, связанный с общим ресурсом. Параметр buf указывает на структуру SHARE_INFO_1004 .
1005
Задает набор флагов, описывающих общий ресурс. Параметр buf указывает на структуру SHARE_INFO_1005 .
1006
Указывает максимальное количество одновременных подключений, которые может разместить общий ресурс. Параметр buf указывает на SHARE_INFO_1006 структуру.
1501
Указывает SECURITY_DESCRIPTOR, связанный с указанной общей папкой. Параметр buf указывает на структуру SHARE_INFO_1501 .

[in] buf

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

[out] parm_err

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

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

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

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

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

Комментарии

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

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

Если функция NetShareSetInfo возвращает ERROR_INVALID_PARAMETER, можно использовать параметр parm_err , чтобы указать недопустимый первый элемент структуры сведений об общем ресурсе. (Структура сведений об общем ресурсе начинается с SHARE_INFO_ и ее формат задается параметром уровня .) В следующей таблице перечислены значения, которые могут быть возвращены в параметре parm_err и соответствующем элементе структуры, который находится в ошибке. (Префикс shi* указывает, что элемент может начинаться с нескольких префиксов, например shi2 или shi502_.)

Значение Член
SHARE_NETNAME_PARMNUM shi*_netname
SHARE_TYPE_PARMNUM ши*_type
SHARE_REMARK_PARMNUM ши-_remark
SHARE_PERMISSIONS_PARMNUM shi*_permissions
SHARE_MAX_USES_PARMNUM shi*_max_uses
SHARE_CURRENT_USES_PARMNUM shi*_current_uses
SHARE_PATH_PARMNUM ши*_path
SHARE_PASSWD_PARMNUM ши-_passwd
SHARE_FILE_SD_PARMNUM ши*_security_descriptor
 

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

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

Примеры

В следующем примере кода показано, как задать комментарий, связанный с общим ресурсом, с помощью вызова функции NetShareSetInfo . Для этого в примере указывается уровень информации 1004 (SHARE_INFO_1004).

#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[ ])
{
   SHARE_INFO_1004 p;
   NET_API_STATUS res;
   DWORD parm_err = 0;

   if(argc<4)
      printf("Usage: SetInfo server share \"remark\"\n");
   else
   {
      //
      // Fill in SHARE_INFO_1004 structure member.
      //
      p.shi1004_remark=argv[3];
      //
      // Call the NetShareSetInfo function,
      //  specifying information level 1004.
      //
      res=NetShareSetInfo(argv[1], argv[2], 1004, (LPBYTE)&p, &parm_err);
      //
      // Display the result of the call.
      //
      if(res==0)
         printf("Remark set.\n");
      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

NetShareGetInfo

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

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

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

SHARE_INFO_1

SHARE_INFO_1004

SHARE_INFO_1005

SHARE_INFO_1006

SHARE_INFO_1501

SHARE_INFO_2

SHARE_INFO_502

SHARE_INFO_503