2011-09-24 3 views
0

J'ai un traitement intensif que je dois effectuer dans un pilote de périphérique, à DISPATCH_LEVEL ou IRQL inférieur.Création d'un thread en mode noyau - Windows

  • Comment créer un thread de noyau?
  • Quel IRQL fonctionne-t-il? Puis-je contrôler cela?
  • Comment est-il programmé? Parce que je pense à partir d'un point de vue du mode utilisateur ici, à quelle priorité se déroule-t-il?
  • Quelles fonctions du noyau puis-je utiliser pour assurer le verrouillage/la synchronisation?
+2

Ceci est couvert par les documents WDK. http://msdn.microsoft.com/en-us/library/ff543102%28v=VS.85%29.aspx etc –

Répondre

3

vous pouvez créer thread système avec this Comme vous pouvez le voir l'un de ses paramètres est une routine de démarrage qui peut contenir du code personnalisé - en ce que vous pouvez utiliser KeRaiseIrql et KeLowerIrql. Par défaut, les threads s'exécuteront dans PASSIVE_LEVEL. "Locks, Deadlocks, and Synchronization" est un document très utile concernant la synchronisation dans le noyau sur Windows et tout le monde qui doit faire du bricolage avec le noyau Windows devrait lire ou au moins le parcourir

+0

Comment puis-je savoir si je cours "dans le contexte du processus système"? J'utilise les pilotes NDIS donc je ne sais pas si leurs rappels d'API m'appellent du processus système ou non. – unixman83

+1

Si vous lisez 1 ligne: Pour Windows Vista et versions ultérieures de Windows, le descripteur sera un descripteur de noyau. C'est toujours utiliser OBJ_KERNEL_HANDLE – LordDoskias

Questions connexes