Компилирование VxD
Процесс компиляции такой же, как и при компиляции обычного win32-приложения. Вы натравливаете ml.exe на asm-исходник, а затем линкуете объектник с помощью link.exe. Есть только отличия в параметрах, передаваемых ml.exe и link.exe.
ml-coff -c -Cx -DMASM6 -DBLD_COFF -DIS_32 firstvxd.asm
-coff - указывает объектный формат COFF
-c - только ассемблирование. Вызов линкера не производится, так как мы будем вызывать link.exe вручную.
-Cx - сохранять регистр публичных, внешних имен.
-D - определяет текстовый макрос. Hапример, -DBLD_COFF определяет текстовый макрос BLD_COFF, который будет использоваться в ассемблировании. Если вы знакомы с c-программированием, это идентично:
#define BLD_COFF
#define IS_32 #define MASM6
link -vxd -def:firstvxd.def firstvxd.obj
-vxd указывает, что мы хотим создать VxD из объектного файла.
-def:<.DEF файл> задает имя файла определения модуля VxD.
Я считаю более правильным использовать make-файлы, но вы также можете создать bat-файл, чтобы автоматизировать компиляцию. Вот мой make-файл.
NAME=firstvxd
$(NAME).vxd:$(NAME).obj link -vxd -def:$(NAME).def $(NAME).obj
$(NAME).obj:$(NAME).asm ml -coff -c -Cx -DMASM6 -DBLD_COFF -DIS_32 $(NAME).asm
[C] Iczelion, пер. Aquila.