Применение функций Win32 API для работы с сетью

Страницы работы

8 страниц (Word-файл)

Фрагмент текста работы

Локальное устройство уже присутствует в профиле пользователя.

 //

 else if (dwResult == ERROR_DEVICE_ALREADY_REMEMBERED)

 {

     TextOut(hdc, 10, 10,

         "Attempted reassignment of remembered device.", 44);

     return FALSE;

 }

 else if(dwResult != NO_ERROR)

 }

Функция WNetAddConnection существует для поддержки ранних версий Windows for Workgroups. Современные приложения должны использовать функции WNetAddConnection2 или WNetAddConnection3. Более подробную информацию об обработчике ошибок смотрите в Retrieving Network Errors.

3. Для того, чтобы начать перечисление подключённых к рабочей станции сетевых ресурсов необходимо вызвать функцию WNetOpenEnum() и WNetEnumResources() для продолжения перечисления.

Для поиска всех сетевых ресурсов, приложение должно будет сначала вызвать функцию WNetOpenEnum()  с параметром lpNetResource равным NULL и затем использовать вернувшийся заголовок для вызова функции WNetEnumResources() для поиска ресурсов. Если один из ресурсов в массиве структур NetResource (который возвращает функция WNetEnumResources()) содержит вложенные ресурсы, то необходимо вызвать снова функцию WNetOpenEnum() для открытия именно этого ресурса и продолжения поиска. Закрыть указатель ресурсов вызвав функцию WNetCloseEnum.

Структура NETRESOURCE содержит информацию о сетевых ресурсах. Эта структура заполняется в процессе поиска сетевых ресурсов. NETRESOURCE также используется при для других сетевых функций.

typedef struct _NETRESOURCE {

  DWORD  dwScope;

  DWORD  dwType;

  DWORD  dwDisplayType;

  DWORD  dwUsage;

  LPTSTR lpLocalName;

  LPTSTR lpRemoteName;

  LPTSTR lpComment;

  LPTSTR lpProvider;

} NETRESOURCE;

Элементы структуры:

dwScope DWORD значение содержащее тип поиска. Может принимать одно из следующих значений.

Значение

Пояснение

RESOURCE_CONNECTED

Поиск подключенных ресурсов. dwUsage при этом не используется.

RESOURCE_GLOBALNET

Поиск всех ресурсов сети. dwUsage при этом не используется.

RESOURCE_REMEMBERED

Поиск всех ресурсов когда либо подключенных.

dwType DWORD значение содержащее набор бит, характерезующих тип искомых ресурсов. Может принимать такие значения.

Значение

Пояснение

RESOURCETYPE_ANY

Все ресурсы

RESOURCETYPE_DISK

Только дисковае ресурсы

RESOURCETYPE_PRINT

Только ресурсы принтера

Функция  WNetEnumResource также может возвращать значение RESOURCETYPE_UNKNOWN если найденый ресурс не дисковый или не принтерный;

dwDisplayType DWORD значение, говорящее как сетевой объект должен быть показан пользовательском интерфейсе сетевого просмотрщика. Может принимать такие значения.

Значение

Пояснение

RESOURCEDISPLAYTYPE_DOMAIN

Объект надо показать как domain.

RESOURCEDISPLAYTYPE_SERVER

 Объект надо показать как сервер.

RESOURCEDISPLAYTYPE_SHARE

Объект надо показать как доступный.

RESOURCEDISPLAYTYPE_GENERIC

Метод показа неопределен.

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

Примечание. Может быть использовано только при dwScope = RESOURCE_GLOBALNET.

Может принимать такие значения.

Значение

Пояснение

RESOURCEUSAGE_CONNECTABLE

Ресурс присоеденяемый. Имя переданое в lpRemoteName может быть помещено в функцию WnetAddConnection для сетевого соеденения.

RESOURCEUSAGE_CONTAINER

Ресурс содержит другие ресурсы. Имя переданое в lpRemoteName может быть помещено в функцию WnetOpenEnum  для поиска вложеных ресурсов

lpLocalName             Если dwScope равно RESOURCE_CONNECTED или RESOURCE_REMEMBERED, то указывает на строку с нулевым окончанием содержащюю имя локального устройства. Если равен NULL соеденение не использует устройство.

lpRemoteName          Если точка входа это сетевой ресурс, то содержит строку с удаленным сетевым именем.

Если точка входа текущее или отсключенное соеденение, то указатель lpRemoteName ассоциирован с указателем lpLocalName.

lpComment                Строка содержит комментарий к сетевому ресурсу.

lpProvider                  Содержит указатель на строку с именем провайдера. Должно быть равно NULL, если имя провайдера не заданно. Для уточнения имени провайдера необходимо воспользоваться функцией WNetGetProviderName.

Функция WnetOpenEnum начинает поиск сетевых ресурсов или существующих соединений. Для продолжения поиска используется функция WnetEnumResource.

DWORD WNetOpenEnum(

  DWORD dwScope,                // определяет границы поиска

  DWORD dwType,                 // определяет тип ресурсов

  DWORD dwUsage,                // определяет использование ресурса

  LPNETRESOURCE lpNetResource,  // структура описания ресурса

  LPHANDLE lphEnum  );           // буфер поиска

Параметры

dwScope [входной] Определяет границы поиска ресурсов. Может принимать такие значения

Значение

Пояснение

 

RESOURCE_CONNECTED

Искать все ресурсы подключенные в текущий момент. Функция игнорирует параметр dwUsage.

RESOURCE_GLOBALNET

Искать все сетевые ресурсы

 

RESOURCE_REMEMBERED

Искать все запомненные ресурсы. Функция игнорирует параметр dwUsage.

 

dwType

[входной] Указывает тип искомых ресурсов. Может принимать такие значения

Значение

Пояснение

RESOURCETYPE_ANY

Все ресурсы

RESOURCETYPE_DISK

Только дисковае ресурсы

RESOURCETYPE_PRINT

Только ресурсы принтера

dwUsage [входной] Определяет используемый тип ресурсов. Может принимать такие значения

Значение

Пояснение

0

Все ресурсы

RESOURCEUSAGE_CONNECTABLE

Все подключенные ресурсы

RESOURCEUSAGE_CONTAINER

Все ресурсы содержащие вложеные ресурсы

RESOURCEUSAGE_ALL

Значение эквивалентно RESOURCEUSAGE_CONNECTABLE,

RESOURCEUSAGE_CONTAINER, and RESOURCEUSAGE_ATTACHED.

Этот параметр игнорируется если dwScope = RESOURCE_GLOBALNET.

lpNetResource            [входной] Указатель на структуру  NETRESOURCE  которая указывает на источник поиска. Если  dwScope не равно RESOURCE_GLOBALNET, этот параметр должен быть равен  NULL.

Если этот параметр NULL, то корень сети используется как отправная точка поиска.

Если параметр не NULL, то это должен быть указатель на структуру NETRESOURCE. Эта структура может быть заполнена пользователем или может быть заполнена функцией WnetEnumResource.

Для поиска всех сетевых ресурсов, приложение должно будет сначала

Похожие материалы

Информация о работе