Есть чужая exe-шка, которая грузит мою dll, которая использует GetNetworkParams из iphlpali -- 64 битная dll-ка в Win8+ крашится при вызове GetNetworkParams; 32 битная версия работает нормально.
При этом вот щито:
соответственно, что не используй и pGetNetworkParams, и GetNetworkParams --> крашится одинаково. Как крашится? Не знаю, exe-шка висит в диспетчере задач, параллельные треды работают.
Здравствуйте, ksd, Вы писали:
ksd>Как крашится? Не знаю, exe-шка висит в диспетчере задач, параллельные треды работают.
Откуда тогда инфа о том, что происходит краш? Нет твоего треда? Может он просто вышел?
Как вариант: код exe-файла, который вызывает код из DLL использует SEH. Соответственно, перехватывает и обрабатывает исключение.
ksd>Что делать то? А?
Воспользоваться отладчиком (== запустить exe под отладкой), который покажет исключение, когда оно возникает: Understanding Exceptions while debugging with Visual Studio: First Chance Exceptions или Windbg, команда SXE.
Здравствуйте, EreTIk, Вы писали:
ETI>Здравствуйте, ksd, Вы писали:
ksd>>Как крашится? Не знаю, exe-шка висит в диспетчере задач, параллельные треды работают. ETI>Откуда тогда инфа о том, что происходит краш? Нет твоего треда? Может он просто вышел? ETI>Как вариант: код exe-файла, который вызывает код из DLL использует SEH. Соответственно, перехватывает и обрабатывает исключение.
да, похоже.
ksd>>Что делать то? А? ETI>Воспользоваться отладчиком (== запустить exe под отладкой), который покажет исключение, когда оно возникает: Understanding Exceptions while debugging with Visual Studio: First Chance Exceptions или Windbg, команда SXE.
отладчик студии что то не показывает ничего, после очередного call внутри iphlpapi перестает адекватно работать.
Для начала сделать отдельный exe и попробовать вызвать GetNetworkParams из него.
Я вот попробовал — все нормально.
Если проблема воспроизводится только в dll, то может в ней и надо искать причину?
Вы случаем не дергаете эти методы из dllmain или какие нибудь другие безобразия не нарушаете?
Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым.
Здравствуйте, VTT, Вы писали:
VTT>Для начала сделать отдельный exe и попробовать вызвать GetNetworkParams из него. VTT>Я вот попробовал — все нормально. VTT>Если проблема воспроизводится только в dll, то может в ней и надо искать причину? VTT>Вы случаем не дергаете эти методы из dllmain или какие нибудь другие безобразия не нарушаете?
из обычного тестового exe-шника все работает. а из необычного -- вот.
Здравствуйте, ononim, Вы писали:
ksd>>Что делать то? А? O>для начала показать остальной код, который собственно и крэшится
крэшится в т.ч. и пример из msdn
проблема в правах или еще чем?
На вскидку, может разница в разных рантаймах которые подгружает ваша библиотека и сторонняя программа. Смешивание разных библиотек debug-release одного и того же рантайма тоже может приводить к разным результатам. Оптимизация, соглашения о вызовах и т.п.
Здравствуйте, Temnikov, Вы писали:
T>На вскидку, может разница в разных рантаймах которые подгружает ваша библиотека и сторонняя программа. Смешивание разных библиотек debug-release одного и того же рантайма тоже может приводить к разным результатам. Оптимизация, соглашения о вызовах и т.п.
рантаймы? причем тут они? и точно разные: прога собрана не знаю чем, но GCC точно, а у меня ms vs.
в 64 бит 1 соглашение о вызовах.
короче, поменял функцию на GetComputerNameEx и проблема ушла.
Здравствуйте, ksd, Вы писали:
ksd>Здравствуйте, EreTIk, Вы писали:
ETI>>Здравствуйте, ksd, Вы писали:
ksd>>>Как крашится? Не знаю, exe-шка висит в диспетчере задач, параллельные треды работают. ETI>>Откуда тогда инфа о том, что происходит краш? Нет твоего треда? Может он просто вышел? ETI>>Как вариант: код exe-файла, который вызывает код из DLL использует SEH. Соответственно, перехватывает и обрабатывает исключение. ksd>да, похоже.
ksd>>>Что делать то? А? ETI>>Воспользоваться отладчиком (== запустить exe под отладкой), который покажет исключение, когда оно возникает: Understanding Exceptions while debugging with Visual Studio: First Chance Exceptions или Windbg, команда SXE. ksd>отладчик студии что то не показывает ничего, после очередного call внутри iphlpapi перестает адекватно работать.
Запустить в WinDBG и посмотреть что и как. Незабыть указать WinDBG расположение отладочных символов.