Порой разработчики приложений просто поражают своей храбростью и безудержным оптимизмом. Свежий пример – на днях получаю письмо с просьбой разобраться почему 32-битное приложение, нормально работавшее в Windows Server 2003 for Itanium перестало запускаться в Windows Server 2008 for Itanium. Что особенно приятно, так это то, что вместо традиционного «приложение падает, если сделать то, то и вот то», просто прислали сессию отладчика, остановленную непосредственно перед вызовом NtAllocateVirtualMemory, который и приводил к падению.
Read more…
На моей машине в папке «%windir%» можно найти 6 (шесть!) копий «regedit.exe».
Что это? Опять коварный Microsoft? Не совсем так. Просто Regedit несколько раз менял свое положение в дереве каталогов.
Read more…
История про ExitProcess получила несколько неожиданное продолжение. Оказалось, что для того, чтобы избежать блокировки на критической секции, захваченной другим потоком во время ExitProcess, в функцию EnterCriticalSection был добавлен код, обрабатывающий эту ситуацию. Начиная с Windows XP EnterCriticalSection проверяет захвачена ли секция и, в случае если захвачена, сверяет идентификатор текущего потока с идентификатором захватчика. А вот дальнейшее поведение зависит от версии операционной системы.
Read more…
Понимаешь, до сих пор мне никто не может внятно сказать, почему нельзя было 64х приложения пихать в новый ключ Регистра, вместо перенаправления 32х на новое “место жительства”. Будь ласка, если это твоя специализация, обоснуй!
Итак, почему же Wow64 использует перенаправление реестра и файловой системы вместо того, чтобы просто закрепить старые ключи реестра и “%windir%\system32” за 32-х разрядными приложениями и позволить 64-х битным приложениям определить новые ключи и использовать, скажем, “%windir%\system64” для 64-х битных системных библиотек? Это было бы довольно логично, особенно если учесть, что нечто подобное уже было проделано при переходе с Windows 3.x на Windows 95/NT.
Read more…
Это, пожалуй, будет мой самый любимый пост. Цитату не дам, иначе сильно порезать придется. Даже и не знаю что ответить человеку.
PS: Если кто не в курсе: Wow64 – это как раз моя епархия.
Несколько вводных статей об особенностях архитектуры IA-64, которые будут весьма кстати, если знакомство с Itanium запланировано на завтра, а отлаживать код нужно уже сейчас:
- Under the hood: IA-64 Registers – обзор регистров процессора в архитектуре IA-64;
- Under the hood: IA-64 Registers. Part 2 – продолжение статьи, описывающее как собственно происходит передача параметров при вызове функции;
- Under the hood: Programming for 64-bit Windows – рассказывает о том, что такое global pointer (gp);
- The Old New Thing: The history of calling conventions, part 4: ia64 – описывает некоторые следствия принятой на Itanium модели вызова функций.
Я уже упоминал несколько раз, что 64-х разрядные версии Windows используют два раздельных представления реестра – одно для 32-х разрядных приложений, а другое для 64-х разрядных. Как-то, я даже писал о том, как это делается. Ключевых моментов там всего ничего:
- Разделён не весь реестр, а лишь некоторые из ключей;
- Физически 32-х разрядные ключи помещаются в ветки с именем «Wow6432Node»;
- Приложения могут выбирать представление реестра с которым они хотят работать с помощью флагов KEY_WOW64_32KEY и KEY_WOW64_64KEY (см. Accessing an Alternate Registry View).
Read more…
Recent Comments