как сохранить содержимое регистра GS
От: assad Россия  
Дата: 07.10.04 08:36
Оценка:
В моей программе, используется некая библиотека.
Эта библиотека использует регистр gs. причем gs она сама устанавливает равным 7.
Я создаю ldt c одной записью, затем библиотека заносит в gs 7.
во время выполнения программы gs сбрасывается в 0.
с помощью softice установил, что в tss gs = 0.
Скорее всего gs сбрасывается при переключении задач.

Вопрос. Как сделать так, чтобы при переключении задач gs не сбрасывался.
Может можно как-то дать указание sheduler'у перед переключением контекста задачи сохранить содержимое этого регистра?

Инициализация ldt, модификация и использования gs происходят в user mode.
ldt точно создаётся. если отлавливать page fault в __try ... __except,
а затем выставлять gs в нужную величину то вроде всё работает.
Но это как-то некрасиво, т.е. заранее ведь неизвестно gs будет 7 или нет в другой системе может уже существовать 0 запись в ldt.
системы winNT/2k/XP. в худшем случае хватит и win2k/XP.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.