Сегодня, работая над кодом VB.NET, мне пришлось получить доступ к двум внешним DLL, чтобы использовать некоторые методы.Разделы справки, которые я нашел, подсказали мне использовать следующие внешние методы:
- shlwapi.dll → PathIsNetworkPath ( Ссылка 1 )
- mpr.dll → WNetAddConnection2 и WNetCancelConnection2 ( Ссылка 2 )
Однако, когда я попытался вызвать эти методы из своего кода, я получил ошибкуговорят, что точки входа не существует.Поэтому я провел небольшое исследование и обнаружил, что библиотеки DLL в моей операционной системе (32-разрядная версия Windows 7 Enterprise) не включают эти методы точно, но вместо этого я получил:
- PathIsNetworkPath → PathIsNetworkPath A / PathIsNetworkPath W
- WNetAddConnection2 → WNetAddConnection2 A / WNetAddConnection2 W
- WNetCancelConnection2 → WNetCancelConnection2 A / WNetCancelConnection2 W
Итак, я проверил их поведение: * Методызаканчивая с "А" работой, как и ожидалось.* Методы, заканчивающиеся на «W», не работают должным образом, они вызывают ошибки или возвращают неверные результаты (например, «false», когда должно быть «true»).И все же, однако, никто в разделах справки не упоминает о схожей проблеме.
Поэтому я провел небольшое исследование, и в MSDN документации я обнаружил, что библиотеки DLL содержаттолько те методы, которые заканчиваются на «A» и «W», и оба из них, в трех случаях, которые я использую, страницы документации идентичны, насколько я вижу.На самом деле по всей странице они не используют имя метода, который заканчивается на A / W, но без него.
Итак, мои вопросы: * почему у меня есть методы "A"и "W" вместо того, чтобы без A / W в моих DLL?В чем разница между ними обоими?Почему методы «А» работают у меня, а методы «W» - нет?