SetupDiGetClassDevs вызывает ошибку на XP, приложение, встроенное в VS2010, на Win7 - PullRequest
1 голос
/ 14 октября 2011

Я пишу приложение WPF, которое использует PINVOKE, чтобы звонить в библиотеку, которую я тоже пишу.В одной из экспортируемых функций в dll вызывается SetupDiGetClassDevs.В этот момент при запуске приложения в XP появляется сообщение об ошибке, в первую очередь диалоговое окно:

«Не удалось найти точку входа в процедуру RegOpenKeyExW в библиотеке динамических ссылок KERNAL32.dll».

Нажатие ОК, затем приводит меня к необработанному диалогу исключений.И приложение WPP, и dll созданы с VS2010 на машине Win7, и приложение отлично работает на системах Win7.Проблема возникает только при запуске приложения на XP.Если я избегаю SetupDiGetClassDevs (и последующих вызовов функций SetUpdi) в dll, то все в порядке;кажется, что механизм PINVOKE работает нормально.

Есть идеи, что не так?Я немного запутался, увидев ссылку на RegOpenKeyExW, поскольку dll не собрана с включенным UNICODE.

Спасибо, Том

1 Ответ

1 голос
/ 14 октября 2011

Я сильно подозреваю, что проблема заключается в некотором вашем P / invoke code или, возможно, в прямом LoadLibrary/GetProcAddress связывании в вашей DLL. Дело в том, что RegOpenKeyEx не является частью kernel32. Экспортируется advapi32. Я не могу поверить, что у вас есть файл .lib, который пытается импортировать его из kernel32, поэтому я думаю, что вам следует искать P / invoke или GetProcAddress в вашем коде или, возможно, стороннем коде, который вы включаете .

...