Вызов 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).

1 ответ

Решение

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

Другие вопросы по тегам