Функция 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
Задает уровень информации данных. Этот параметр может принимать одно из указанных ниже значений.
Значение | Значение |
---|---|
|
Указывает сведения об общем ресурсе, включая имя ресурса, тип и разрешения, а также количество подключений. Параметр buf указывает на SHARE_INFO_2 структуру. |
|
Указывает сведения об общем ресурсе, включая имя ресурса, тип и разрешения, количество подключений и другие важные сведения. Параметр buf указывает на SHARE_INFO_502 структуру. |
|
Указывает сведения об общем ресурсе, включая имя ресурса, тип и разрешения, количество подключений и другие важные сведения. Параметр buf указывает на структуру SHARE_INFO_503 . |
[in] buf
Указатель на буфер, указывающий данные. Формат этих данных зависит от значения параметра level . Дополнительные сведения см. в разделе Буферы функций управления сетью.
[out] parm_err
Указатель на значение, которое получает индекс первого члена структуры сведений об общем ресурсе, который вызывает ошибку ERROR_INVALID_PARAMETER . Если этот параметр имеет значение NULL, индекс не возвращается при ошибке. Дополнительные сведения см. в статье о функции NetShareSetInfo .
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение будет NERR_Success.
Если функция завершается ошибкой, возвращаемое значение может быть одним из следующих кодов ошибок.
Код возврата | Описание |
---|---|
|
Пользователь не имеет доступа к запрошенной информации. |
|
Недопустимое значение, указанное для параметра level . |
|
Недопустимый символ или имя файловой системы. |
|
Указанный параметр недопустим. |
|
Имя общей папки уже используется на этом сервере. |
|
Операция недопустима для перенаправленного ресурса. Указанное имя устройства назначается общему ресурсу. |
|
Устройство или каталог не существуют. |
Комментарии
Эта функция применяется только к общим папкам 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 |