Функция 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
Указывает уровень информации о данных. Этот параметр может принимать одно из указанных ниже значений.
Значение | Значение |
---|---|
|
Возвращает имя общей папки. Параметр bufptr указывает на структуру SHARE_INFO_0 . |
|
Возвращает сведения об общем ресурсе, включая имя и тип ресурса, а также комментарий, связанный с ресурсом. Параметр bufptr указывает на структуру SHARE_INFO_1 . |
|
Возвращает сведения об общем ресурсе, включая имя ресурса, тип и разрешения, пароль и количество подключений. Параметр bufptr указывает на структуру SHARE_INFO_2 . |
|
Возвращает имя и тип ресурса, а также комментарий, связанный с ресурсом. Параметр bufptr указывает на структуру SHARE_INFO_501 . |
|
Возвращает сведения об общем ресурсе, включая имя ресурса, тип и разрешения, количество подключений и другие важные сведения. Параметр bufptr указывает на структуру SHARE_INFO_502 . |
|
Указывает сведения о общем ресурсе, включая имя ресурса, тип и разрешения, количество подключений и другую соответствующую информацию. Параметр buf указывает на структуру SHARE_INFO_503 . Если элементом shi503_servername этой структуры является "*", имя сервера не настроено.
Windows Server 2003 и Windows XP: Этот уровень информации не поддерживается. |
|
Возвращает значение, указывающее, является ли общая папка корневым томом в структуре дерева Dfs. Параметр bufptr указывает на структуру SHARE_INFO_1005 . |
[out] bufptr
Указатель на буфер, который получает данные. Формат этих данных зависит от значения параметра level . Дополнительные сведения см. в разделе Буферы функций управления сетью.
Этот буфер выделяется системой и должен быть освобожден с помощью функции NetApiBufferFree .
Возвращаемое значение
Если функция выполняется успешно, возвращаемое значение будет NERR_Success.
Если функция завершается сбоем, возвращаемое значение может быть одним из следующих кодов ошибок.
Код возврата | Описание |
---|---|
|
У пользователя нет доступа к запрошенной информации. |
|
Значение, указанное для параметра level , является недопустимым. |
|
Указанный параметр недопустим. |
|
Недостаточно памяти. |
|
Имя общей папки не существует. |
Комментарии
Эта функция применяется только к общим папкам 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 |
См. также раздел
Общие сведения об управлении сетью