[C#]Capturer le traffic LPT

Voilà, je voudrais dans un programme écrit en C# avec le framework 2.0, capturer le traffic (en sortie pour le moment) du port LPT (parallèle).

Je n’ai aucune idée de comment faire ca et c’est bien pour ca que je poste ici :P, je ne sais même pas si c’est possible.

Je cherche donc un point de départ pour trouver une solution.

Alors je n’ai peut-être pas compris ce que tu voulais faire, mais est-ce un outil de ce genre ?

Si tu peux faire des DeviceIoControl() en C#, c’est bon. :stuck_out_tongue:

J’aurais dit qu’il fallait écrire un driver filtre de parport.sys pour pouvoir faire ce que tu veux sérieusement. Heureusement ce driver existe déjà, il est livré avec PORTMON.EXE (cf le lien). Le « trick » est qu’il est dans les ressources de l’exécutable, il faut que tu lances le programme le laisse tourner, copie le driver (PORTMSYS.SYS) et hop. Ensuite il suffit de retroconcevoir les schémas de communication du driver filtre, mais ce n’est pas grand chose, regarde la fonction de dispatch d’IRP_MJ_DEVICE_CONTROL et tu as tout ce qu’il faut.

Par curiosité, j’ai regardé le code source de parport.sys, j’ai vu ces IOCTL d’intéressant :[ul]
[li]IOCTL_PAR_QUERY_INFORMATION[/li][li]IOCTL_PAR_QUERY_LOCATION[/li][li]IOCTL_PAR_GET_DEVICE_CAPS[/li][/ul]Il est possible que les résultats te suffisent.

[quote=« Moloch »]Par curiosité, j’ai regardé le code source de parport.sys, j’ai vu ces IOCTL d’intéressant :[ul]
[li]IOCTL_PAR_QUERY_INFORMATION[/li][li]IOCTL_PAR_QUERY_LOCATION[/li][li]IOCTL_PAR_GET_DEVICE_CAPS[/li][/ul]Il est possible que les résultats te suffisent.[/quote]
Ah non c’est nul, tu n’échappes pas au driver filtre, IOCTL_PAR_QUERY_INFORMATION ne te donne par exemple que les informations suivantes[ul]
[li]PARALLEL_POWER_OFF : Alimentation je suppose[/li][li]PARALLEL_PAPER_EMPTY : Plus de papier ? (pour les imprimantes ?)[/li][li]PARALLEL_OFF_LINE [/li][li]PARALLEL_NOT_CONNECTED[/li][li]PARALLEL_BUSY[/li][li]PARALLEL_SELECTED[/li][/ul]Ca te renvoie juste un status avec le code de contrôle, donc suxance.