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


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

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

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

Синтаксис

DWORD WNetUseConnectionA(
  [in]      HWND           hwndOwner,
  [in]      LPNETRESOURCEA lpNetResource,
  [in]      LPCSTR         lpPassword,
  [in]      LPCSTR         lpUserId,
  [in]      DWORD          dwFlags,
  [out]     LPSTR          lpAccessName,
  [in, out] LPDWORD        lpBufferSize,
  [out]     LPDWORD        lpResult
);

Параметры

[in] hwndOwner

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

[in] lpNetResource

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

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

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

Наиболее эффективно указать тип ресурса в этом элементе, например RESOURCETYPE_DISK или RESOURCETYPE_PRINT. Однако если элемент lpLocalName NULL, или если он указывает на пустую строку и CONNECT_REDIRECT не задан, dwType может быть RESOURCETYPE_ANY.

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

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

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

Если строка пуста или если lpLocalNameNULL, подключение к сети происходит без перенаправления.

Если значение CONNECT_REDIRECT задано в параметре dwFlags или если для сети требуется перенаправленное локальное устройство, функция выбирает локальное устройство для перенаправления и возвращает имя устройства в параметре lpAccessName.

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

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

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

 

Функция WNetUseConnection игнорирует другие элементы структуры NETRESOURCE. Дополнительные сведения см. в описаниях для параметра dwFlags.

[in] lpPassword

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

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

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

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

[in] lpUserId

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

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

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

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

[in] dwFlags

Набор битовых флагов, описывающих подключение. Этот параметр может быть любым сочетанием следующих значений.

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

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

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

Windows XP: Когда система автоматически назначает буквы сетевого диска, буквы назначаются начиная с Z:, а затем Y:, и заканчивая C:. Это уменьшает столкновение между буквами диска для входа (например, буквами сетевого диска) и глобальными буквами дисков (например, дисками). Обратите внимание, что предыдущие выпуски назначили буквы дисков, начиная с 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: Это значение не поддерживается.

[out] lpAccessName

Указатель на буфер, который получает системные запросы к соединению. Этот параметр может быть NULL.

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

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

[in, out] lpBufferSize

Указатель на переменную, указывающую размер буфера lpAccessName в символах. Если вызов завершается сбоем, так как буфер недостаточно велик, функция возвращает требуемый размер буфера в этом расположении. Дополнительные сведения см. в описаниях параметра lpAccessName и кода ошибки ERROR_MORE_DATA в разделе "Возвращаемые значения".

[out] lpResult

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

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

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

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

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

Возвращаемый код Описание
ERROR_ACCESS_DENIED
Вызывающий объект не имеет доступа к сетевому ресурсу.
ERROR_ALREADY_ASSIGNED
Локальное устройство, указанное элементом lpLocalName, уже подключено к сетевому ресурсу.
ERROR_BAD_DEVICE
Недопустимое значение, указанное lpLocalName.
ERROR_BAD_NET_NAME
Значение, указанное элементом lpRemoteName, не допускается любому поставщику сетевых ресурсов, так как имя ресурса недопустимо или поскольку именованный ресурс не может быть расположен.
ERROR_BAD_PROVIDER
Значение, указанное элементом lpProvider, не соответствует ни одному поставщику.
ERROR_CANCELLED
Попытка сделать подключение отменена пользователем через диалоговое окно из одного из поставщиков сетевых ресурсов или вызываемого ресурса.
ERROR_EXTENDED_ERROR
Произошла ошибка, зависявшая от сети. Чтобы получить описание ошибки, вызовите функцию WNetGetLastError.
ERROR_INVALID_ADDRESS
Вызывающий объект передает указатель на буфер, к которому не удалось получить доступ.
ERROR_INVALID_PARAMETER
Эта ошибка является результатом одного из следующих условий:
  1. Элемент lpRemoteName NULL. Кроме того, lpAccessName не NULL, но lpBufferSize либо NULL, либо указывает на ноль.
  2. Член dwType не является ни RESOURCETYPE_DISK, ни RESOURCETYPE_PRINT. Кроме того, CONNECT_REDIRECT заданы в dwFlags и lpLocalNameNULL, или подключение к сети, требующей перенаправления локального устройства.
ERROR_INVALID_PASSWORD
Указанный пароль недопустим, и флаг CONNECT_INTERACTIVE не задан.
ERROR_MORE_DATA
Буфер lpAccessName слишком мал.

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

ERROR_NO_MORE_ITEMS
Операционная система не может автоматически выбрать локальное перенаправление, так как все допустимые локальные устройства используются.
ERROR_NO_NET_OR_BAD_PATH
Не удалось завершить операцию, так как сетевой компонент не запущен или не распознается указанное имя ресурса.
ERROR_NO_NETWORK
Сеть недоступна.

Замечания

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

Заметка

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

Требования

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

См. также

WNetAddConnection2

WNetAddConnection3

WNetGetConnection

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

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

WnetCancelConnection