Archive

Posts Tagged ‘Windows’

«Угон» потоков.

May 4th, 2010

Бывает так, что требуется выполнить свой код в контексте произвольного потока. Либо в своем потоке, но в то время когда поток выполняет чужой код. Например, сборщик мусора может хотеть перехватить управление, даже если поток крутит бесконечный цикл. Один из методов перехвата – использование функций GetThreadContext и SetThreadContext. Эти функции позволяют манипулировать контекстом потока – т.е. состоянием регистров процессора, в том числе и указателем на текущую выполняемую инструкцию. В простейшем случае перехватчик приостанавливает поток, сохраняет текущий контекст, модифицирует EIP, чтобы тот показывал на нужный код, и снова запускает поток. При обратном переключении просто восстанавливается ранее сохраненный контекст и все. Метод простой, эффективный и … неработающий. :-)

Read more…

, , , ,

«Непобедимый».

April 5th, 2010

Поверхностное сравнение архитектуры консоли в Windows и Unix.

January 10th, 2010

Довольно интересно сравнить, как устроена консоль в Windows и Unix. Вот упрощенная схема как это работает в Unix:

Консоль в Unix

Консоль в Unix

Read more…

, ,

Почему нельзя прервать вызов ReadConsole?

December 29th, 2009

Представьте, что где-то в коде есть такой кусок:

BOOL Res =
    ReadConsole(
        GetStdHandle(STD_INPUT_HANDLE),
        Buffer,
        sizeof(Buffer),
        &ReadChars,
        NULL);

Теперь, скажем, нам в какой-то момент нужно корректно прервать вызов ReadConsole() (из другого потока). Как это сделать?

Read more…

, ,

AppCompat.

December 8th, 2009

Словечко «AppCompat», появившееся в моем лексиконе за время работы над Wow64, обозначает множество вещей. Чаще всего – геморрой. Иногда – великий геморрой. Происходит оно от «application compatibility» – т.е. совместимость OS с приложениями, она же – «обратная совместимость».

Read more…

, ,

Что такое MinWin и зачем он нужен.

December 3rd, 2009

Я смотрю, что каждое упоминание слова «MinWin» (последним отличился Марк Руссинович на PDC 2009) вызывает много вопросов, главный из которых – «что это такое и зачем оно вообще надо?» Попытаюсь ответить с меру своего понимания. Замечу, что свечку над MinWin я не держал, так что считать мои слова истиной в последней инстанции не стоит.

Read more…

,

Что нового в Windows 7: изменения в Wow64.

June 9th, 2009

Наконец-то обновилась документация в MSDN. Теперь можно спокойно рассказать, что изменилось в Wow64 с выходом Windows 7.

  1. Был полностью переписан механизм перенаправления реестра (Registry Redirection).
  2. Была изменена структура реестра. Многие ключи, перенаправляемые ранее в Wow6432Node, теперь совместно используются 32-х и 64-х разрядными приложениями.
  3. Механизм синхронизации 32-х и 64-х ключей (Registry Reflection) был с корнем выкорчеван и с позором изгнан из кода Windows. :-)
  4. В документацию было внесено множество дополнений и исправлений.

Read more…

, ,