Здравствуйте, Murr, Вы писали:
A>>В моей программе, используется некая библиотека.
A>>Эта библиотека использует регистр gs. причем gs она сама устанавливает равным 7.
A>>Я создаю ldt c одной записью, затем библиотека заносит в gs 7.
A>>во время выполнения программы gs сбрасывается в 0.
A>>с помощью softice установил, что в tss gs = 0.
A>>Скорее всего gs сбрасывается при переключении задач.
M>А разве в Win нити переключаются через TSS?
M>Вряд ли Win — настолько корявая поделка индусов, что там про gs забыли.
M>Может gs неявно изменяется кодом вашей программы?
TSS тут не при чем. Просто где-то в ядре gs, похоже используется, а при переключении на более низкий уровень привилегий, все сег. регистры, указывающие на более привилегированные сегменты, проц обнуляет. Поэтому при возврате из любого системного вызова gs=0. Обойти это можно, наверное, только пропатчив ядро.