Not a kernel guy

… in the Windows kernel team

Sunday, April 6, 2008

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

Не так давно приходит письмо с вопросом и довольно длинным уже шлейфом ответов и форвардов. Вопрос (мой вольный перевод): «Как в расширении для 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 вопросов-ответов и в дамках. Хотя правильный ответ был дан в первом же письме.

Posted at 9:00 pm •

RSS feed | Trackback URI

6 Comments »

[...] from blog.not-a-kernel-guy.com. Published Monday, April 07, 2008 6:01 AM by alexeypa Filed under: [...]

 
Comment by Yuriy Volkov — April 6, 2008 @ 10:15 pm

так живо перед глазами встает образ блондинки ;-)

Comment by Not a kernel guy — April 6, 2008 @ 10:26 pm

Да ладно, большинство “блондинок” в IT - мужики. Демография, понимаешь! :-)

 
 
Comment by WEB Developer — April 6, 2008 @ 11:05 pm

Многие ждут когда им не только разжуют, но и помогут глотнуть. Я в таких случаях не разжевываю, а ответами заставляю человека думать и приходить к результату самому. Это даст большую пользу человеку.

 
Comment by Виктор Гр. — April 7, 2008 @ 4:04 am

Ого. А что такое .NET-процессор?

Comment by Not a kernel guy — April 7, 2008 @ 6:17 am

.NET процесс, а не процессор.

 
 

Your Comment (smaller | larger)

You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Powered by WordPress