Question

Récemment, je cherchais à utiliser W32pServiceTable dans mon chauffeur. Je ne wink32.lib importé dans les sources:

TARGETNAME=exp
TARGETTYPE=DRIVER
TARGETLIB=$(DDK_LIB_PATH)\win32k.lib
SOURCES=Experimental.cpp
MSC_WARNING_LEVEL=/W3

Et je déclare dans le fichier source:

extern PDWORD W32pServiceTable;

Mais je reçois sans solution symbole. Je lis, qui peuvent utiliser uniquement les pilotes wink32.lib GDI. Mais je suis sûr que les autres conducteurs peuvent également créer un lien vers cette bibliothèque (mais je ne sais pas comment). Je serais très reconnaissant si vous pouviez aider.

Était-ce utile?

La solution

Ceci est vrai. Seuls les pilotes peuvent utiliser GDI win32k.sys et vice versa -. GDI pilotes peuvent être statiquement liés uniquement à win32k.sys

La raison est que la plupart des fenêtres sont chargés internes dans l'espace de mémoire globale, alors que win32k.sys est chargé dans le soi-disant « espace de session ». Quelques infos ici:

http://www.tar.hu/wininternals/ch07lev1sec4.html

En mots simples - la plupart des composants Windows et les pilotes sont chargés une fois pour l'ensemble du système, alors que des choses comme la gestion interface utilisateur, GDI, etc -. Sont chargés par session

Il y a une possibilité délicate lors de l'exécution pour les pilotes GDI pour obtenir des pointeurs vers des fonctions Ntoskrnl et de les utiliser, et vice versa -. Pilotes WDM avec un certain effort peuvent utiliser des fonctions win32k (qui fonctionnera pour la session « actuelle »)

De toute façon, pourquoi voudriez-vous faire un lien vers win32k? Quelles sont les fonctionnalités avez-vous besoin?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top