INetSharingConfiguration->EnableSharing(ICSSHARINGTYPE_PUBLIC )возвращает 0x80040201

Я пытаюсь программно включить общий доступ с типом общего доступа на устройстве, которое соответствует известному GUID на компьютере с Windows 7.

API в:http://msdn.microsoft.com/en-us/library/windows/desktop/aa365944(v=vs.85).aspx

Список ошибок показывает следующее:E_ABORT, E_FAIL, E_INVALIDARG, E _NOINTERFACE, E_NOTIMPL, E_OUTOFMEMORY, E_POINTER и E_UNEXPECTED.

Код ошибки, который я возвращаю, — 0x80040201, который разрешается в :«Событию не удалось вызвать ни одного из подписчиков». который, похоже, не соответствует ни одному из перечисленных выше кодов ошибок.

Если я вручную зайду в свойства сетевых адаптеров, перейду на вкладку «Общий доступ», включу общий доступ, выберу частную сеть и нажму «ОК», общий доступ включится правильно.

После этого мой приведенный выше код работает без проблем.

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

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

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

Панель свойств общего доступа к сети Windows делает что-то за кулисами, чего не делает этот вызов API, поскольку ручная настройка общего доступа на адаптере работает каждый раз.

У кого-нибудь есть идеи, что это может быть?

6
задан TZHX 25 September 2012 в 11:46
поделиться