Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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?

  • Autor

Danke hat aber leider nicht geholfen. Ich hab jetzt mal DbgPrint durch DbgPrintEx ersetzt, aber leider funktioniert das entladen des Treibers nicht so richtig.

Das heißt wenn ich DeleteService aufrufe klappt das zwar, beim nächsten Aufruf von CreateService schlägt dieser aber fehl und der alte Service wird wieder per OpenService geöffnet bis ich neu gestartet habe.

Hab aber keine Lust jetzt dauernd neu zu starten also muss ich erstmal das Problem lösen...

  • Autor

Ha! Jetzt klappts :)

Ich hab mich mal an diesen Artikel Reading and Filtering Debugging Messages géhalten auch wenn ich ihn nicht 100% verstanden habe und einfach wie im Beispiel in der Registry unter Debug Print Filter den Wert IHVDRIVER 0x7ff eingetragen.

Die DbgPrintEx Aufrufe sehen jetzt so aus:

DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_MASK | 0x10, "DriverEntry Called \r\n");

und im DebugViewer werden alle angezeigt.

Außerdem lässt sich der Treiber jetzt auch dynamisch entladen nachdem ich den Rückgabetyp der Unload Funktion von void in VOID geändert habe. Ich dachte eigentlich das wär das Selbe, aber wohl doch nicht.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.