Archive

Posts Tagged ‘Wow64’

“4GB will always be enough”.

October 18th, 2007 7 comments

Порой разработчики приложений просто поражают своей храбростью и безудержным оптимизмом. Свежий пример – на днях получаю письмо с просьбой разобраться почему 32-битное приложение, нормально работавшее в Windows Server 2003 for Itanium перестало запускаться в Windows Server 2008 for Itanium. Что особенно приятно, так это то, что вместо традиционного «приложение падает, если сделать то, то и вот то», просто прислали сессию отладчика, остановленную непосредственно перед вызовом NtAllocateVirtualMemory, который и приводил к падению.

Read more…

Regedit.

August 7th, 2007 14 comments

На моей машине в папке «%windir%» можно найти 6 (шесть!) копий «regedit.exe».

regedit.exe

Что это? Опять коварный Microsoft? Не совсем так. Просто Regedit несколько раз менял свое положение в дереве каталогов.

Read more…

Tags: ,

Продолжение истории про ExitProcess.

July 18th, 2007 Comments off

История про ExitProcess получила несколько неожиданное продолжение. Оказалось, что для того, чтобы избежать блокировки на критической секции, захваченной другим потоком во время ExitProcess, в функцию EnterCriticalSection был добавлен код, обрабатывающий эту ситуацию. Начиная с Windows XP EnterCriticalSection проверяет захвачена ли секция и, в случае если захвачена, сверяет идентификатор текущего потока с идентификатором захватчика. А вот дальнейшее поведение зависит от версии операционной системы.

Read more…

Почему Wow64 использует перенаправление реестра и файловой системы?

June 26th, 2007 4 comments

Понимаешь, до сих пор мне никто не может внятно сказать, почему нельзя было 64х приложения пихать в новый ключ Регистра, вместо перенаправления 32х на новое “место жительства”. Будь ласка, если это твоя специализация, обоснуй!

Итак, почему же Wow64 использует перенаправление реестра и файловой системы вместо того, чтобы просто закрепить старые ключи реестра и “%windir%\system32” за 32-х разрядными приложениями и позволить 64-х битным приложениям определить новые ключи и использовать, скажем, “%windir%\system64” для 64-х битных системных библиотек? Это было бы довольно логично, особенно если учесть, что нечто подобное уже было проделано при переходе с Windows 3.x на Windows 95/NT.

Read more…

“Wow6432Node” наносит ответный удар.

May 23rd, 2007 7 comments

Это, пожалуй, будет мой самый любимый пост. Цитату не дам, иначе сильно порезать придется. Даже и не знаю что ответить человеку. :-)

PS: Если кто не в курсе: Wow64 – это как раз моя епархия.

Tags:

Отладка кода на Itanium (IA-64).

May 10th, 2007 4 comments

Несколько вводных статей об особенностях архитектуры IA-64, которые будут весьма кстати, если знакомство с Itanium запланировано на завтра, а отлаживать код нужно уже сейчас:

  1. Under the hood: IA-64 Registers – обзор регистров процессора в архитектуре IA-64;
  2. Under the hood: IA-64 Registers. Part 2 – продолжение статьи, описывающее как собственно происходит передача параметров при вызове функции;
  3. Under the hood: Programming for 64-bit Windows – рассказывает о том, что такое global pointer (gp);
  4. The Old New Thing: The history of calling conventions, part 4: ia64 – описывает некоторые следствия принятой на Itanium модели вызова функций.

Вы используете «Wow6432Node» в своем коде? Немедленно прекратите!

May 7th, 2007 6 comments

Я уже упоминал несколько раз, что 64-х разрядные версии Windows используют два раздельных представления реестра – одно для 32-х разрядных приложений, а другое для 64-х разрядных. Как-то, я даже писал о том, как это делается. Ключевых моментов там всего ничего:

  1. Разделён не весь реестр, а лишь некоторые из ключей;
  2. Физически 32-х разрядные ключи помещаются в ветки с именем «Wow6432Node»;
  3. Приложения могут выбирать представление реестра с которым они хотят работать с помощью флагов KEY_WOW64_32KEY и KEY_WOW64_64KEY (см. Accessing an Alternate Registry View).

Read more…