Создание VxD на Visual C++ без ассемблерных модулей

       

Параметры секций


Компилятор Visual C++ по умолчанию создает секции четырех типов:

  • .text — код программы;
  • .data — данные программы;
  • .rdata — константы программы (данные только для чтения);
  • .bss — неинициализированные данные.
  • В DEF-файле этим секциям должны быть приписаны атрибуты EXECUTE, PRELOAD (как для класса резидентного кода LCODE).

    При необходимости можно помещать код и данные в другие секции при помощи директив #pragma code_seg, #pragma data_seg и #pragma alloc_text, приписав им необходимые атрибуты. Это может понадобиться, например, для выделения части кода/данных, используемых только при инициализации или разрешенных для откачки (атрибут DISCARDABLE).

    Библиотечные функции также могут быть «разложены» по секциям с другими именами, поэтому при их использовании необходимо следить, чтобы атрибуты секций соответствовали их назначению и поведению при работе VxD.

    Функции, импортируемые из библиотеки VXDWRAPS.CLB, используют в основном секции _LTEXT и _LDATA.



    Содержание раздела