Задав вопрос, не забудьте выслушать ответ.
Не так давно приходит письмо с вопросом и довольно длинным уже шлейфом ответов и форвардов. Вопрос (мой вольный перевод): «Как в расширении для WinDbg определить разрядность кода в 32-х битном процессе, запущенном под Wow64?» Я в вопросах разработки плагинов для WinDbg не в зуб ногой, но все что касается Wow64 так или иначе касается и меня тоже.
Сканирую «простыню». Первый же ответ на оригинальное письмо говорит, что команда «.effmach» позволяет переключаться между 32-х битным и 64-х битным кодом. Ответ автора вопроса не устроил, и она предположила, что для определения разрядности кода можно сканировать заголовок PE файла. В таком виде это письмо попадает ко мне.
Пишу обстоятельный ответ, мол, заголовок PE файла использовать не получится, потому как в Wow64 процессе некоторые DLL 64-х разрядные, да и для AnyCPU .NET сборок это не работает. Но, говорю, вышеупомянутый «.effmach» это умеет, так почему бы не посмотреть, как это сделано?
В ответ получаю «Спасибо большое за ответ, но «.effmach» не подходит потому и потому. Но вот если я воспользуюсь заголовком PE файла…». Еще через пару писем выясняем, что пресловутый «.effmach» может еще и возвращать текущий режим. то что надо. Ну, думаю, разобрались. Как бы ни так!
Приходит следующее письмо с вопросом: «А можно ли для этой цели использовать функцию IsWow64Process?» Здрасте, приехали!
- Нет, нельзя.
- Но вот если я прочитаю заголовок PE файла вот так и вот так, то …
- Это не работает для Wow64 на Itanium, да и для .NET процессов то же. Почему бы не воспользоваться «.effmach»?
- А разве это не то же самое, что и IsWow64Process?
- Нет.
После этого, собеседница, наконец, находит пример кода, который делает то, что нужно. Всего 28 вопросов-ответов и в дамках. Хотя правильный ответ был дан в первом же письме.
[...] from blog.not-a-kernel-guy.com. Published Monday, April 07, 2008 6:01 AM by alexeypa Filed under: [...]
так живо перед глазами встает образ блондинки
Да ладно, большинство “блондинок” в IT - мужики. Демография, понимаешь!
Многие ждут когда им не только разжуют, но и помогут глотнуть. Я в таких случаях не разжевываю, а ответами заставляю человека думать и приходить к результату самому. Это даст большую пользу человеку.
Ого. А что такое .NET-процессор?
.NET процесс, а не процессор.