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.

War es hilfreich?

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?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top