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


Функция WNetAddConnection3A (winnetwk.h)

Функция WNetAddConnection3 делает подключение к сетевому ресурсу. Функция может перенаправить локальное устройство в сетевой ресурс.

Функция WNetAddConnection3 аналогична функции WNetAddConnection2. Основное различие заключается в том, что WNetAddConnection3 имеет дополнительный параметр, дескриптор окна, который поставщик сетевых ресурсов может использовать в качестве окна владельца диалоговых окон. Функция WNetAddConnection2 и WNetAddConnection3 заменяет функцию WNetAddConnection.

Синтаксис

DWORD WNetAddConnection3A(
  [in] HWND           hwndOwner,
  [in] LPNETRESOURCEA lpNetResource,
  [in] LPCSTR         lpPassword,
  [in] LPCSTR         lpUserName,
  [in] DWORD          dwFlags
);

Параметры

[in] hwndOwner

Дескриптор окна, который поставщик сетевых ресурсов может использовать в качестве окна владельца для диалоговых окон. Используйте этот параметр, если задать значение CONNECT_INTERACTIVE в параметре dwFlags .

Параметр hwndOwner можно NULL. Если это так, вызов WNetAddConnection3 эквивалентен вызову функции WNetAddConnection2.

[in] lpNetResource

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

Необходимо указать следующие элементы структуры NETRESOURCE.

Член Значение
dwType
Тип сетевого ресурса для подключения.

Если элемент lpLocalName указывает на строку nonempty, этот элемент может быть равен RESOURCETYPE_DISK или RESOURCETYPE_PRINT.

Если lpLocalNameNULLили если он указывает на пустую строку, dwType может быть равно RESOURCETYPE_DISK, RESOURCETYPE_PRINT или RESOURCETYPE_ANY.

Хотя этот член является обязательным, его сведения могут игнорироваться поставщиком сетевых служб.

lpLocalName
Указатель на строку null-terminated, указывающую имя локального устройства для перенаправления, например "F:" или "LPT1". Строка обрабатывается без учета регистра.

Если строка пуста или если lpLocalNameNULL, функция делает подключение к сетевому ресурсу без перенаправления локального устройства.

lpRemoteName
Указатель на строку null-terminated, указывающую сетевой ресурс для подключения. Строка может быть до MAX_PATH символов длиной и должна соответствовать соглашениям об именовании поставщика сети.
lpProvider
Указатель на строку null-terminated, указывающую сетевого поставщика для подключения.

Если lpProvidernullили если он указывает на пустую строку, операционная система пытается определить правильного поставщика, проанализировав строку, на которую указывает элемент lpRemoteName.

Если этот член не null, операционная система пытается подключиться только к именованным поставщику сети.

Этот элемент следует задать только в том случае, если вы знаете, какой сетевой поставщик вы хотите использовать. В противном случае позвольте операционной системе определить, с каким поставщиком сети сопоставляется сетевое имя.

 

Функция WNetAddConnection3 игнорирует другие элементы структуры NETRESOURCE.

[in] lpPassword

Указатель на строку null-terminated, указывающую пароль, используемый при подключении к сети.

Если lpPasswordNULL, функция использует текущий пароль по умолчанию, связанный с пользователем, указанным параметром lpUserName.

Если lpPassword указывает на пустую строку, функция не использует пароль.

Если подключение завершается ошибкой из-за недопустимого пароля, а значение CONNECT_INTERACTIVE задано в параметре dwFlags dwFlags, функция отображает диалоговое окно с просьбой пользователя ввести пароль.

Windows Me/98/95: Этот параметр должен быть NULL или пустую строку.

[in] lpUserName

Указатель на строку null-terminated, указывающую имя пользователя для создания подключения.

Если lpUserNameNULL, функция использует имя пользователя по умолчанию. (Контекст пользователя для процесса предоставляет имя пользователя по умолчанию.)

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

Строка имени пользователя представляет контекст безопасности. Это может быть конкретно для поставщика сети.

Windows Me/98/95: Этот параметр должен быть NULL или пустую строку.

[in] dwFlags

Набор параметров подключения. В настоящее время определены следующие значения.

Ценность Значение
CONNECT_INTERACTIVE
Если этот флаг задан, операционная система может взаимодействовать с пользователем в целях проверки подлинности.
CONNECT_PROMPT
Этот флаг указывает системе не использовать параметры по умолчанию для имен пользователей или паролей без предоставления пользователю возможности предоставить альтернативу. Этот флаг игнорируется, если CONNECT_INTERACTIVE также не задан.
CONNECT_REDIRECT
Этот флаг принудительно перенаправляет локальное устройство при подключении.

Если lpLocalName член NETRESOURCE указывает локальное устройство для перенаправления, этот флаг не действует, так как операционная система по-прежнему пытается перенаправить указанное устройство. Когда операционная система автоматически выбирает локальное устройство, элемент dwType не должен быть равным RESOURCETYPE_ANY.

Если этот флаг не задан, локальное устройство автоматически выбирается для перенаправления, только если для сети требуется перенаправление локального устройства.

Windows Server 2003 и Windows XP: Когда система автоматически назначает буквы сетевого диска, буквы назначаются начиная с Z:, а затем Y:, и заканчиваются C:. Это уменьшает столкновение между буквами диска для входа (например, буквами сетевого диска) и глобальными буквами дисков (например, дисками). Обратите внимание, что более ранние версии назначенных дисков Windows начинаются с C: и заканчиваются Z:.

CONNECT_UPDATE_PROFILE
Необходимо помнить подключение к сетевому ресурсу.

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

Операционная система запоминает только успешные подключения, которые перенаправляют локальные устройства. Он не запоминает подключения, которые являются неудачными или без устройств. (Подключение без устройства возникает, когда элемент lpLocalNameNULL или когда он указывает на пустую строку.)

Если этот битовый флаг ясно, операционная система не восстанавливает подключение при входе в систему.

CONNECT_COMMANDLINE
Если этот флаг задан, операционная система запрашивает у пользователя проверку подлинности с помощью командной строки вместо графического пользовательского интерфейса (GUI). Этот флаг игнорируется, если CONNECT_INTERACTIVE также не задан.

Windows 2000/NT и Windows Me/98/95: Это значение не поддерживается.

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

Windows 2000/NT и Windows Me/98/95: Это значение не поддерживается.

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

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

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

Возвращаемый код Описание
ERROR_ACCESS_DENIED
Вызывающий объект не имеет доступа к сетевому ресурсу.
ERROR_ALREADY_ASSIGNED
Локальное устройство, указанное элементом lpLocalName, уже подключено к сетевому ресурсу.
ERROR_BAD_DEV_TYPE
Тип локального устройства и тип сетевого ресурса не совпадают.
ERROR_BAD_DEVICE
Недопустимое значение, указанное lpLocalName.
ERROR_BAD_NET_NAME
Значение, указанное элементом lpRemoteName, не допускается любому поставщику сетевых ресурсов, так как имя ресурса недопустимо или поскольку именованный ресурс не может находиться.
ERROR_BAD_PROFILE
Профиль пользователя находится в неправильном формате.
ERROR_BAD_PROVIDER
Значение, указанное элементом lpProvider, не соответствует ни одному поставщику.
ERROR_BUSY
Маршрутизатор или поставщик занят, возможно, инициализация. Вызывающий объект должен повторить попытку.
ERROR_CANCELLED
Попытка сделать подключение отменена пользователем через диалоговое окно из одного из поставщиков сетевых ресурсов или вызываемого ресурса.
ERROR_CANNOT_OPEN_PROFILE
Система не может открыть профиль пользователя для обработки постоянных подключений.
ERROR_DEVICE_ALREADY_REMEMBERED
Запись для устройства, указанного элементом lpLocalName, уже находится в профиле пользователя.
ERROR_EXTENDED_ERROR
Произошла ошибка, зависявшая от сети. Вызовите функцию WNetGetLastError, чтобы получить описание ошибки.
ERROR_INVALID_PASSWORD
Указанный пароль недопустим, и флаг CONNECT_INTERACTIVE не задан.
ERROR_NO_NET_OR_BAD_PATH
Невозможно выполнить операцию, так как сетевой компонент не запущен или поскольку указанное имя не может использоваться.
ERROR_NO_NETWORK
Сеть недоступна.

Замечания

Функция WNetUseConnection аналогична функции WNetAddConnection3. Основное различие заключается в том, что WNetUseConnection может автоматически выбрать неиспользуемое локальное устройство для перенаправления в сетевой ресурс.

В Windows Server 2003 и Windows XP функции WNet создают и удаляют буквы сетевого диска в пространстве имен устройства MS-DOS, связанном с сеансом входа, так как MS-DOS устройства определяются идентификатором AuthenticationID (a)
локально уникальный идентификаторили LUID, связанный с сеансом входа.) Это может повлиять на приложения, которые вызывают одну из функций WNet, чтобы создать букву сетевого диска под одним входом пользователя, но запрашивать существующие буквы сетевого диска под другим пользователем. Примером этой ситуации может быть создание второго входа пользователя в сеанс входа, например путем вызова функции CreateProcessAsUser, а второй вход запускает приложение, которое вызывает функцию GetLogicalDrives. Вызов функции GetLogicalDrives не возвращает буквы сетевого диска, созданные вызовами функции WNet при первом входе. Обратите внимание, что в предыдущем примере первый сеанс входа по-прежнему существует, и пример может применяться к любому сеансу входа, включая сеанс служб терминалов. Дополнительные сведения см. в разделе Определение MS-DOS имени устройства.

В Windows Server 2003 и Windows XP служба, которая выполняется как localSystem, вызывает функцию WNetAddConnection3, сопоставленный диск отображается для всех сеансов входа пользователя.

Для поставщиков сети Майкрософт lpRemoteName член структуры NETRESOURCE, на которую указывает параметр lpNetResource, может содержать адрес IPv4 в нотации с точками десятичной нотации. Примером для общей папки может быть следующее:

\192.168.1.1\share

Для поставщиков сети Майкрософт в Windows Vista и более поздних версиях lpRemoteName член структуры NETRESOURCE, на которую указывает параметр lpNetResource, может содержать IPv6-адрес. Однако формат литерала IPv6 должен использоваться таким образом, чтобы IPv6-адрес был правильно проанализирован. Адрес литерала IPv6 имеет форму:

ipv6-address с символами ":", замененными символами -" и строкой ".ipv6-literal.net".

Например, для следующего IPv6-адреса:

2001:4898:9:3:c069:aa97:fe76:2449

Примером для общей папки может быть следующее:

\2001-4898-9-3-c069-aa97-fe76-2449.ipv6-literal.net\share

Другие поставщики сети могут поддерживать элемент lpRemoteName структуры NETRESOURCE, на которую указывает параметр lpNetResource, содержащий IPv4 или IPv6-адрес, но это зависит от конкретного сетевого поставщика.

Windows 7 и Windows Server 2008 R2: Если функция WNetAddConnection3 вызывается с явными учетными данными пользователя, указанными в pUsername и lpPassword, чтобы установить подключение к сетевому ресурсу на определенном сервере, а затем снова вызвать любой из этих параметров как null (чтобы использовать имя пользователя по умолчанию или пароль по умолчанию) на том же сервере, вызов с ошибкой. Возвращенная ошибка будет ERROR_BAD_USERNAME или ERROR_INVALID_PASSWORD.

Заметка

Заголовок winnetwk.h определяет WNetAddConnection3 как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 2000 Профессиональный [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
целевая платформа Виндоус
заголовка winnetwk.h
библиотеки Mpr.lib
DLL Mpr.dll

См. также

NETRESOURCE

WNetAddConnection2

WNetCancelConnection2

WNetGetConnection

WNetUseConnection

Обзор сети Windows (WNet)

Сетевые функции Windows