Скомпилировал один пример из VXD Tutorial'а, размещенного здесь на сайте. Хотел загрузить полученный VXD с помощью CreateFile. Но CreateFile всегда возвращала INVALID_HANDLE_VALUE. Причем делал все по инструкции, в т.ч. и команды: ml -coff -c -Cx -DMASM6 -DBLD_COFF -DIS_32 shellmsg.asm link -vxd -def:shellmsg.def shellmsg.obj Долго не мог понять, почему готовый VXD из примера загружается, а мой перекомпилированный нет. Стал сравнивать в дизассемблере. Оказалось, что в моем примере поле SDK_Version из VxD description block равно 0x40A, а в готовом VXD из Tutorial'а оно равно 0x400. Увидел то это я давно, но не думал, что это имеет какое-то значение. Видимо, все из-за того что у меня Windows 95. После того как добавил опцию -DWIN40COMPAT в командной строке все стало работать. Вот такая вот история. А потратил на поиск ошибки целый день
weiv Дяржи, вот, на днях траяну писал, это от него кусок, гатовый VxD тока смари, лучше пользовать 98 и выше 1486497580__Vxd1371.rar
CARDINAL Насчет твоего VXD... А нехорошо портить MBR и boot-sector )) А представь, если этот человек 15 июля (если я правильно понял текст) этого года не будет включать компьютер? Значит изменения загрузочных секторов отложатся до следующего года? Да, кстати, в твоем VXD поле SDK_Version тоже 0x40A, так что на моем Windows 95 не запустился бы... к счастью
weiv Да, брат, а если ты очень внимательно разглядел сырец. то там кроме голой деструкции имеется ещё и возможность восстановления убитого mbr и br )