Interaction bidirectionnelle entre l’application en mode utilisateur et le pilote en mode kernel?

Je suis sur le point d’écrire l’interaction suivante:

Ma question est la suivante: Quelle est la méthode recommandée pour notifier une application en mode utilisateur du pilote, puis faire en sorte que le pilote attende la réponse?

Pour la notification d’événement, vous pouvez utiliser un événement de notification. C’est-à-dire que le kernel appelle IoCreateNotificationEvent et KeSetEvent. L’utilisateur appelle KeWaitForSingleObject. Pour la communication de message utilisateur-kernel, vous pouvez utiliser IOCTL.

Alternativement, vous pouvez simplement utiliser un canal nommé pour les deux objectives.

PS Vous ne pouvez pas utiliser PsSetCreateProcessNotifyRoutine () pour votre objective car il est uniquement destiné à l’audit, mais pas à la prévention / annulation.