Не удается увидеть подключенный диск с помощью WNetAddConnection2 - PullRequest
0 голосов
/ 08 марта 2011

Я не могу увидеть подключенный диск с помощью WNetAddConnection2W в Windows Service, написанный на VC ++

Когда я отлаживаю сервис, он возвращает успех, но когда я открываю проводник, чтобы увидеть, что подключенный диск его там нет.Я делаю это в службе Windows, где моя служба работает с правами администратора.Мой код выглядит так:

    lpNetResource->lpRemoteName = L"\\\\172.24.18.240\\praveena\\CIFS";
    lpNetResource->lpLocalName = L"Z:"; 
dwRetVal = WNetAddConnection2W(lpNetResource, wcpPassword, wcpUserName, CONNECT_UPDATE_RECENT); 

Когда я использую тот же код в приложении MFC, он отлично работает.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 08 марта 2011

Когда диск добавляется или удаляется в другом сеансе (как это происходит в случае служб Windows), Explorer не может узнать об этом.

Чтобы решить эту проблему в нашей библиотеке Callback File System, которая создает виртуальные диски (и пользователи делают это из сервисов), мы реализовали специальную DLL-библиотеку расширения оболочки.Эта DLL слушает сигналы, посылаемые кодом пользовательского режима, который выполняет создание диска (и который выполняется в контексте службы).Когда DLL получает сигнал, она передает системное сообщение WM_DEVICECHANGE.Затем Explorer перехватывает это сообщение и повторно сканирует список устройств.

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