Вызов WNetAddConnection2 с пустым локальным именем - PullRequest
2 голосов
/ 19 февраля 2010

У меня есть небольшая программа, которая просто проверяет, находится ли указанный файл на указанном сетевом диске, который не сопоставлен с компьютером.
Чтобы проверить это, я временно сопоставляюсь с сетевым местоположением, проверяю, существует ли файл, и затем отключаю диск. Теперь я понял, что могу вызвать WNetAddConnection2 с пустым локальным именем (MSDN: если строка пуста или lpLocalName имеет значение NULL, функция устанавливает соединение с сетевым ресурсом без перенаправления локального устройства.)
Только для показа кода:

NETRESOURCE nr;
nr.dwType = RESOURCETYPE_DISK;
nr.lpLocalName = NULL; // explicitly set this to NULL
nr.lpRemoteName = "\\\\computer\\c$";
nr.lpProvider = NULL;

DWORD dwResult = WNetAddConnection2(&nr, cstrPassword, cstrUsername, FALSE);
if (dwResult != 0)
{
    return false;
}

CPath cLocation(cstrFileLocation);
return cLocation.FileExists() != FALSE;

Пока все хорошо, код работает нормально. Но теперь я хочу знать, есть ли проблема с этим вызовом WNetAddConnection2? Я не могу позвонить WNetCancelConnection, так как у меня нет локального имени. Так есть ли у меня какие-то зомби на моем компьютере сейчас?
Как я могу увидеть все мои сетевые подключения на моем компьютере? Лучше всего будет короткая команда для командной строки (что-то вроде NET USE).

1 Ответ

3 голосов
/ 19 февраля 2010

Хорошо, разобрался. Я могу позвонить WNetCancelConnection2(nr.lpRemoteName, 0, TRUE);, чтобы правильно отключить диск.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...