2011-03-18 2 views
0

Je suis en train de développer un pilote de filtre NDIS. Cependant, je ne semble pas pouvoir le charger. J'ai les options de démarrage debug et testsigning activées; mon pilote est testé et le certificat est chargé dans les magasins root et trustedpublisher.Le pilote de filtre NDIS ne se charge pas dans Windows 2008 R2

Avant testsigning permis, mon chauffeur montrerait en ntbootlog.txt comme

N'a pas charger le pilote \ SystemRoot \ system32 \ drivers \ mydriver.sys

Après avoir permis testsigning, le conducteur ne se présente pas du tout. Il est cependant présenté dans les propriétés d'interface. L'interface est interrompue jusqu'à ce que je désactive mon filtre, même si mon pilote est actuellement un pilote de filtre NDIS pass-through très minimal. Quand je désactive mon filtre, tout fonctionne correctement.

Le pilote ne figure pas dans la liste des modules de windbg, mais est dans la liste des "modules non chargés", ce qui suggère que le pilote a été chargé à un moment donné. Mon pilote produit une sortie pendant DriverEntry et DriverUnload, ainsi que dans tous les hooks NDIS obligatoires. Aucune de ces sorties n'apparaît dans !dbgprint de windbg, ce qui suggère que le DriverEntry du chauffeur n'a jamais été appelé. Je ne sais pas comment déboguer ce problème; Quelqu'un pourrait-il me donner des indices sur ce qui pourrait se passer ici? J'utilise Windows 2008 R2 DataCenter, version vérifiée. Je suis actuellement limité à une configuration de machine unique.

+0

Le démarrage d'un exemple de pilote a résolu le problème pour moi. Toutes les réponses ci-dessous semblaient supposer que l'entrée de pilote était invoquée, alors que ce n'était clairement pas le cas. – Ondergetekende

Répondre

0

Essayez d'abord de charger un pilote simple qui imprime uniquement une chaîne de trace dans DriverEntry, signez-le et chargez-le. Si vous voyez la trace, nous allons essayer de comprendre ce qui ne va pas avec votre pilote particulier. Sinon, peut-être que le traçage du noyau est désactivé pour votre système et que votre pilote NDIS n'est pas chargé à cause d'un problème, que vous ne pouvez pas voir, bien sûr, car les traces du système sont désactivées.

+0

J'écris un message de déboguage comme première chose dans DriverEntry. Il n'apparaît pas dans le tampon dbgprint. – Ondergetekende

+1

Par défaut, les sorties DbgPrint() sont désactivées dans Vista/Server2008. Vous pouvez suivre le paramètre ci-dessous dans le registre pour activer les impressions de débogage. Ouvrez le Registre et accédez à ce chemin, "HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Contrôle \ Session Manager \ Filtre d'impression de débogage" et ajoutez la valeur suivante "DEFAULT": REG_DWORD: 0xFFFFFFFF, puis redémarrez. Vous devrez peut-être créer la clé "Debug Print Filter" si elle n'existe pas. – MindBlower

0

Si le pilote apparaît dans la liste des modules non chargés, il est chargé.

Si vous utilisez DbgPrint assurez-vous de lire la documentation MSDN, en particulier la section sur le filtrage.

Pour attraper le chargement du pilote, vous pouvez utiliser sxe ld:mydriver cela vous permettra de définir des points d'arrêt dans votre entrée de pilote. Un autre moyen facile de déboguer ceci est de mettre un point d'arrêt codé en dur dans DriverEntry DbgBreakPoint()

Questions connexes