Научил студию компилить драйвера. Написал простенький дров: Код (Text): #include <ntoskrnl.h> /* ################################################################### DriverUnload */ NTSTATUS DriverUnload(IN PDRIVER_OBJECT pDriverObject) { DbgPrint("Driver unloaded"); return STATUS_SUCCESS; } /* ################################################################### DriverEntry */ NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING pRegistryPath) { pDriverObject->DriverUnload = DriverUnload; DbgPrint("Driver loaded"); return STATUS_SUCCESS; } Всё отлично компилируется, создаётся driver.sys. Проблеммы происходят при загрузке. Пробовал множество лоадеров, втч свой. При загрузке лоадер подвисает. смотрел в ольге: если это SCManager, то подвисание происходит на функции CreateService; если через реестр - подвисает ZwLoadDriver. С чем это может быть связано? Я так думаю, что линк неправильно конфигурирет sys файл. Как это можно исправить? Для понимания выкладываю дров. http://studentsoft.dom.raid.ru/driver.rar параметры линкера: ntoskrnl.lib /base:"0x10000" /entry:"DriverEntry" /incremental:no /pdb:"Release/driver.pdb" /machine:IX86 /out:"Release/driver.sys" /driver /subsystem:native /align:3
блин, там алигн32. опечатка. компилятор: /nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"Release/driver.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c если подробней - я сорцы выложил. в dsp файле есть.
default calling convention ставь __stdcall а не __cdecl (/Gz кажется параметр компилера, но в опциях легче задать)