Задав вопрос, не забудьте выслушать ответ

Не так давно приходит письмо с вопросом и довольно длинным уже шлейфом ответов и форвардов. Вопрос (мой вольный перевод): «Как в расширении для WinDbg определить разрядность кода в 32-х битном процессе, запущенном под Wow64?» Я в вопросах разработки плагинов для WinDbg не в зуб ногой, но все что касается Wow64 так или иначе касается и меня тоже.

Сканирую «простыню». Первый же ответ на оригинальное письмо говорит, что команда «.effmach» позволяет переключаться между 32-х битным и 64-х битным кодом. Ответ автора вопроса не устроил, и она предположила, что для определения разрядности кода можно сканировать заголовок PE файла. В таком виде это письмо попадает ко мне.

Пишу обстоятельный ответ, мол, заголовок PE файла использовать не получится, потому как в Wow64 процессе некоторые DLL 64-х разрядные, да и для AnyCPU .NET сборок это не работает. Но, говорю, вышеупомянутый «.effmach» это умеет, так почему бы не посмотреть, как это сделано?

В ответ получаю «Спасибо большое за ответ, но «.effmach» не подходит потому и потому. Но вот если я воспользуюсь заголовком PE файла…». Еще через пару писем выясняем, что пресловутый «.effmach» может еще и возвращать текущий режим. то что надо. Ну, думаю, разобрались. Как бы ни так!

Приходит следующее письмо с вопросом: «А можно ли для этой цели использовать функцию IsWow64Process?» Здрасте, приехали!

После этого, собеседница, наконец, находит пример кода, который делает то, что нужно. Всего 28 вопросов-ответов и в дамках. Хотя правильный ответ был дан в первом же письме.

comments powered by Disqus