Ejection d'un péréphérique de stockage usb

enigme137 Messages postés 1 Date d'inscription lundi 18 janvier 2010 Statut Membre Dernière intervention 18 janvier 2011 - 18 janv. 2011 à 09:31
cs_yanb Messages postés 271 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 7 juillet 2022 - 19 janv. 2011 à 16:08
Salut, je suis sur le point de développer une application de contrôle USB dont le but est de vérifier le numéro de série d'un flash disque, et effectuer l'éjection du périphérique si le flash disque n'est pas inscrit dans la base de données. La majeur partie est déjà faite, cependant au moment de l'éjection ça prend dans les environs de 8 à 10 secondes, ce qui permet à l'intrus de pouvoir utiliser le périphérique pendant ce temps là. Ma solution est de bloquer le clavier et la souris pendant ce temps là, mais j'aimerai bien avoir une autre solution pour éliminer ce temps. une partie de mon code est la suivante :

if Msg.wParam = $8000 then
if DEV_BROADCAST_HDR(Msg.LParam)^.dbch_devicetype=2 then
if DEV_BROADCAST_VOLUME(Msg.LParam)^.dbcv_flags=0 then
begin
//Ajout du nouveau volume dans la liste
Str(Ln(DEV_BROADCAST_VOLUME(Msg.LParam)^.dbcv_unitmask)/Ln(2)+Ord('A'):2:0,LettreVolume);
LettreVolume:=Char(StrToInt(LettreVolume));
...............//partie du vérification du numéro de série
eject(LettreVolume);

merci d'avance.
Veuillez accepter mes chaleureuses salutations

3 réponses

Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
19 janv. 2011 à 10:42
Ben en même temps, c'est normal, lorsque tu éjectes le périphérique Windows va envoyer un message à toutes les applications les notifiant qu'un périphérique va être enlevé sous peu, et les applications doivent y répondre (si une application ne répond pas, Windows va attendre puis considérer que c'est bon, et si une application dit non Windows va te dire "ce périphérique ne peut pas être enlevé maintenant"). Une fois que ça c'est fait, Windows va compléter toutes les écritures décalées pour ce périphérique (en gros, c'est des opérations disque dur sur le périphérique qui sont reportées à plus tard pour diminuer la charge sur le système), et plein d'autres trucs. Même pour une petite clef USB de rien du tout. Donc oui, ça prend du temps d'éjecter un périphérique USB, et on ne peut pas y faire grand chose. On peut probablement s'arranger pour se débarrasser de tout ça mais à mon avis ça risque de devenir une vraie usine à gaz, donc peut-être faut-il réfléchir à ton problème et te demander si il n'y a pas quelque chose de mieux à faire pour empêcher un intrus de faire ce qu'il veut sans avoir à trifouiller dans le système.

Cordialement, Bacterius !
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
19 janv. 2011 à 10:44
Et comme le souligne Yanb que je salue au passage, c'est peut-être la détection qui prend le plus de temps finalement.

Cordialement, Bacterius !
0
cs_yanb Messages postés 271 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 7 juillet 2022 14
19 janv. 2011 à 16:08
Salut bacterius c'est bien là que la detection est le plus longue.
Après il y a d'autres solutions :
- interdire l'installation de nouveaux périphériques
- désactiver le port usb et l'activer au besoin dans la base de registre par programme
- mettre des droits utilisateur, administrateur
- bloquer les fichiers Usbstor.inf et Usbstor.pnf
Mais dans tous les cas si un fichier a été ouvert avant la demande d'éjection... echec ejection...
@+yanb
0
Rejoignez-nous