Вызов WNetAddConnection2 с пустым локальным именем

У меня есть небольшая программа, которая просто проверяет, находится ли указанный файл на указанном сетевом диске, который не подключен к компьютеру.
Чтобы проверить это, я временно сопоставляю сетевое расположение, проверяю, существует ли файл, а затем отключаю диск. Теперь я понял, что могу вызвать 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).


person Simon Linder    schedule 19.02.2010    source источник


Ответы (1)


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

person Simon Linder    schedule 19.02.2010
comment
Спасибо, мне было полезно! - person Fred; 29.11.2012