Not a kernel guy

… in the Windows kernel team

Tuesday, August 7, 2007

Regedit.

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

regedit.exe

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

(more…)

Tags: ,
Posted at 7:43 pm •

Wednesday, July 18, 2007

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

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

(more…)

Posted at 11:21 pm •

Tuesday, June 26, 2007

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

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

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

(more…)

Posted at 11:20 pm •

Wednesday, May 23, 2007

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

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

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

Tags:
Posted at 8:40 am •

Thursday, May 10, 2007

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

Несколько вводных статей об особенностях архитектуры 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 модели вызова функций.
Posted at 11:16 pm •

Monday, May 7, 2007

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

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

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

(more…)

Posted at 10:17 am •

Thursday, May 3, 2007

Wow64: ограничение на максимальное число процессоров.

Бытует мнение, что хотя 64-х битные версии Windows поддерживают до 64-х процессоров, Wow64 ограничивает максимальное число процессоров для 32-х битных приложений 32 процессорами. Вероятнее всего причина появления подобного мнения заключается в том, что функции GetProccessAffinityMask, SetProcessAffinityMask и SetThreadAffinityMask используют 32 битные маски. Статья про особенности Wow64 в этой области тоже недостаточно подробна.

(more…)

Tags: ,
Posted at 11:39 pm •
« Previous PageNext Page »

Powered by WordPress