DDK / WDM import wink32.lib in den Treiber
-
30-09-2019 - |
Frage
Vor kurzem habe ich versucht W32pServiceTable in meinem Treiber zu verwenden. Ich habe wink32.lib in Quellen importiert:
TARGETNAME=exp
TARGETTYPE=DRIVER
TARGETLIB=$(DDK_LIB_PATH)\win32k.lib
SOURCES=Experimental.cpp
MSC_WARNING_LEVEL=/W3
Und ich erkläre in Quelldatei:
extern PDWORD W32pServiceTable;
Aber ich bin immer Symbol ungelöst. Ich habe gelesen, dass nur GDI Treiber wink32.lib verwenden können. Aber ich bin ziemlich sicher, dass andere Fahrer auch zu dieser Bibliothek verknüpfen können (aber ich weiß nicht, wie). Ich wäre sehr dankbar, wenn Sie helfen können.
Lösung
Das ist wahr. Nur GDI Treiber win32k.sys verwenden können, und umgekehrt -. GDI-Treiber können statisch nur win32k.sys verknüpft sein werden
Der Grund dafür ist, dass die meisten Windows-Interna in den globalen Speicherraum geladen, während win32k.sys in den so genannten „Session-Raum“ geladen wird. Einige Informationen hier:
http://www.tar.hu/wininternals/ch07lev1sec4.html
In einfachen Worten - die meisten der Windows-Komponenten und Treiber einmal geladen werden für das gesamte System, während Dinge wie UI-Management, GDI und etc. -. Pro Sitzung geladen
Es ist eine knifflige Möglichkeit, während der Laufzeit für GDI-Treiber Zeiger auf ntoskrnl Funktionen zu erhalten und nutzen sie, und umgekehrt -. WDM-Treiber mit einigem Aufwand kann win32k Funktionen (das wird für die ‚aktuelle‘ Sitzung arbeiten)
Wie auch immer, warum möchten Sie Link wollen win32k? Welche Funktionen brauchen Sie?