Ich hab mir einen kleinen Testtreiber nach einer Anleitung geschrieben welcher in allen Funktion eine Debugausgabe per DbgPrint macht, zum Beispiel auch im DriverEntry Point.
Den Treiber hab ich dann mit dem WDK gebaut und mit folgendem Code geladen:
int main()
{
SC_HANDLE hSCManager;
SC_HANDLE hService;
SERVICE_STATUS ss;
hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_CREATE_SERVICE);
printf("Load Driver\n");
if(hSCManager)
{
printf("Create Service\n");
hService = CreateService(hSCManager, "Driver1",
"Example Driver",
SERVICE_START | DELETE | SERVICE_STOP,
SERVICE_KERNEL_DRIVER,
SERVICE_DEMAND_START,
SERVICE_ERROR_IGNORE,
"C:\\driver1.sys",
NULL, NULL, NULL, NULL, NULL);
if(!hService)
{
hService = OpenService(hSCManager, "Driver1",
SERVICE_START | DELETE | SERVICE_STOP);
}
if(hService)
{
printf("Start Service\n");
StartService(hService, 0, NULL);
printf("Press Enter to close service\r\n");
getchar();
ControlService(hService, SERVICE_CONTROL_STOP, &ss);
DeleteService(hService);
CloseServiceHandle(hService);
}
CloseServiceHandle(hSCManager);
}
return 0;
}[/PHP]
Obwohl der Treiber wohl geladen wird kann ich im Tool DebugView von Sysinternals keine Debugausgaben sehen.
Auch wenn ich in meinem Testprogramm den Treiber verwende erscheinen keine Debugausgaben.
[PHP]int main()
{
HANDLE hFile;
DWORD dwReturn;
hFile = CreateFile("\\\\.\\Driver1",
GENERIC_READ | GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, 0, NULL);
if(hFile)
{
WriteFile(hFile, "Hello from user mode!",
sizeof("Hello from user mode!"), &dwReturn, NULL);
CloseHandle(hFile);
}
return 0;
}
Weiß jemand woran das liegen könnte?