· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› GetVersionEx.

<< . 1 . 2 .

Посл.отвђт Сообщенiе


Дата: Ноя 21, 2003 23:47:11

Как на счет вопросов? Я не понял фразу:

GDT меняетса для каждой
програмы, но при этом её скелет остаётса одинаковым!


чесал репу минут пять, пока не одурел. При смене контекста, ессно, fs переопределяется. Это делает скедьюлер. А ты что имел ввиду?


Дата: Ноя 21, 2003 23:57:55

В моем, в прямом смысле слова ламерском, понимании вопроса, есть селекторы сегментов (cs, fs и т.п.), которые дают индексы дескрипторов сегментов в GDT (64-битные структуры), которые определены для Windows так:
typedef struct _KGDTENTRY
        {
/*000*/ WORD  LimitLow;
/*002*/ WORD  BaseLow;
/*004*/ DWORD HighWord;
/*008*/ }
        KGDTENTRY,
     * PKGDTENTRY,
    **PPKGDTENTRY;


Так вот, насколько я тебя усвоил, ты говоришь, что кто-то меняет GDT. Когда, кто, зачем?


Дата: Ноя 22, 2003 00:55:24 · Поправил: merlin

При смене контекста, ессно, fs переопределяется. Это делает скедьюлер. А ты что имел ввиду?
Ну в общем это и имел в виду.
Только выразилься слишком запутано.

...кто-то меняет GDT. Когда, кто, зачем?
Сама винда его и меняет.
По большому счёту идёт перестройка GDT на каждом
изменении контекста (или деланья нового, не помню точно).
Обычно изменения видно только на селекторе который
ставитса в fs. Вообще с этим селектором очень
длиная история, потому что чясто бывает что
иммено такого селектора и в помине нету,
а есть перенаправка на другой селектор...

Кстати используя информацию что в 9х есть LDT,
а в NT её нету, достачьно чтобы сделать вот это:

mov ax, cs
shr ax, 3 ; проверка бита TI
setc byte [9x] ; если есть перенос тогда установит переменую


Дата: Ноя 22, 2003 20:59:39

merlin

Надо проверить... Потом. Спасибо!

<< . 1 . 2 .


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.033