OVH Cloud OVH Cloud

HELP je craque

31 réponses
Avatar
Vincent
Bonjour,

Depuis une semaine je balaye des sites de dev à la recherche d'info.

Comment déconnecter par programme un lecteur ? ( clé USB en particulier, un
lecteur de disquette et tout élément USB )

Comment récupérer le n° de série ( quand il existe ) d'une clé USB ou d'un
disque USB ?

Help c'est une vraie galère pour mon boulot !!!!!

Merci

Vincent

10 réponses

1 2 3 4
Avatar
Merlin
> Comment déconnecter par programme un lecteur ? ( clé USB en particulier, un
lecteur de disquette et tout élément USB )




tu peux regarder cette lib, je n'ai pas trop regardé, tu nous diras si
ça marche pour ton problème :
http://sourceforge.net/project/showfiles.php?group_id610&package_id7762


Comment récupérer le n° de série ( quand il existe ) d'une clé USB ou d'un
disque USB ?



pour le n° de série tu peux adapter et tester ce code (j'ai pas testé,
j'ai ça dans ma réserve..) :

using System.Management;

ManagementObject disk new ManagementObject("win32_logicaldisk.deviceid="c:"");
disk.Get();

//FOLLOWING SHOWS PROPERTIES AVAILABLE
string strProp = "";
foreach(PropertyData d in disk.Properties)
strProp += d.Name + "n";
MessageBox.Show(strProp);

//TO GET PARTICULAR PROPERTY
strProp = disk.GetPropertyValue("VolumeSerialNumber").ToString();
MessageBox.Show("Volume Serial Number: " + strProp);

--

///3rL1n____
Avatar
Vincent
j'ai un driver lisudb0.sys qui est arrété ( dixit driverquery.exe), je ne
sais pas comment l'activer


"Merlin" a écrit dans le message de news:

Comment déconnecter par programme un lecteur ? ( clé USB en particulier,
un lecteur de disquette et tout élément USB )




tu peux regarder cette lib, je n'ai pas trop regardé, tu nous diras si ça
marche pour ton problème :
http://sourceforge.net/project/showfiles.php?group_id610&package_id7762


Comment récupérer le n° de série ( quand il existe ) d'une clé USB ou
d'un disque USB ?



pour le n° de série tu peux adapter et tester ce code (j'ai pas testé,
j'ai ça dans ma réserve..) :

using System.Management;

ManagementObject disk > new ManagementObject("win32_logicaldisk.deviceid="c:"");
disk.Get();

//FOLLOWING SHOWS PROPERTIES AVAILABLE
string strProp = "";
foreach(PropertyData d in disk.Properties)
strProp += d.Name + "n";
MessageBox.Show(strProp);

//TO GET PARTICULAR PROPERTY
strProp = disk.GetPropertyValue("VolumeSerialNumber").ToString();
MessageBox.Show("Volume Serial Number: " + strProp);

--

///3rL1n____




Avatar
Merlin
> j'ai un driver lisudb0.sys qui est arrété ( dixit driverquery.exe), je ne
sais pas comment l'activer



inconnu au bataillon. Et ça gêne la gestion USB ?

--

///3rL1n____
Avatar
Simon Mourier [SoftFluent]
Il y a des API (IOCTL_STORAGE_EJECT_MEDIA) dans Windows pour faire cela. Pas
la peine à mon avis d'utiliser des librairies externes, et d'installer des
drivers.

Voir un exemple VB.NET (facile à convertir en C#) ici
http://vbnet.mvps.org/index.html?code/disk/devioejectload.htm

Simon.
www.softfluent.com



"Merlin" a écrit dans le message de news:

j'ai un driver lisudb0.sys qui est arrété ( dixit driverquery.exe), je
ne sais pas comment l'activer



inconnu au bataillon. Et ça gêne la gestion USB ?

--

///3rL1n____




Avatar
Vincent
MERCI je teste ça !!!

Vincent

"Simon Mourier [SoftFluent]" a écrit dans le
message de news:
Il y a des API (IOCTL_STORAGE_EJECT_MEDIA) dans Windows pour faire cela.
Pas la peine à mon avis d'utiliser des librairies externes, et d'installer
des drivers.

Voir un exemple VB.NET (facile à convertir en C#) ici
http://vbnet.mvps.org/index.html?code/disk/devioejectload.htm

Simon.
www.softfluent.com



"Merlin" a écrit dans le message de news:

j'ai un driver lisudb0.sys qui est arrété ( dixit driverquery.exe), je
ne sais pas comment l'activer



inconnu au bataillon. Et ça gêne la gestion USB ?

--

///3rL1n____








Avatar
Merlin
> Il y a des API (IOCTL_STORAGE_EJECT_MEDIA) dans Windows pour faire cela. Pas
la peine à mon avis d'utiliser des librairies externes, et d'installer des
drivers.



Utiliser .NET pour faire des appels aux API Win32 ça me semble pas très
cohérent malgré tout...

--

///3rL1n____
Avatar
Vincent
Que proposes tu ?


"Merlin" a écrit dans le message de news:

Il y a des API (IOCTL_STORAGE_EJECT_MEDIA) dans Windows pour faire cela.
Pas la peine à mon avis d'utiliser des librairies externes, et
d'installer des drivers.



Utiliser .NET pour faire des appels aux API Win32 ça me semble pas très
cohérent malgré tout...

--

///3rL1n____




Avatar
Merlin
>> Utiliser .NET pour faire des appels aux API Win32 ça me semble pas très
cohérent malgré tout...





soit :
1/ trouver les API managées qui font le boulot s'il y en a
2/ sinon, placer le code Win32 dans une DLL win32 et faire du P/Invoke
très ciblé uniquement sur cette DLL en attendant de remplacer les
appels par du code managé.

--

///3rL1n____
Avatar
Simon Mourier [SoftFluent]
C'est tout à fait cohérent. P/Invoke fait intégralement partie de .NET. Et
c'est ce qu'on trouve dans une grande partie des assemblies du Framework
lui-même. Par exemple dans System.Windows.Forms.

Simon.
www.softfluent.com


"Merlin" a écrit dans le message de news:

Il y a des API (IOCTL_STORAGE_EJECT_MEDIA) dans Windows pour faire cela.
Pas la peine à mon avis d'utiliser des librairies externes, et
d'installer des drivers.



Utiliser .NET pour faire des appels aux API Win32 ça me semble pas très
cohérent malgré tout...

--

///3rL1n____




Avatar
Merlin
> C'est tout à fait cohérent. P/Invoke fait intégralement partie de .NET. Et
c'est ce qu'on trouve dans une grande partie des assemblies du Framework
lui-même. Par exemple dans System.Windows.Forms.



Windows Forms n'est pas une référence à ce niveau là justement. Mais
sous Mono tu noteras que la lib dessine les contrôles par
System.Drawing et ne fait pas de P/invoke... Celui qui utilise WF peut
donc espérer être full managé, sous Mono par exemple.
En revanche celui qui conçoit son soft avec plein de p/invoke est
condamné à rester "unsafe". C'est un choix délicat, qui se justifie
peut être parfois, mais qui au minimum réclame d'y réfléchir car, je le
redis, il n'est pas cohérent.
Mais ce que je disais c'était comparativement aux besoins de notre ami
qui visiblement créé un logiciel dont les fonctions de base reposent
sur un dialogue avec USB, donc du hardware, donc du code non managé.
Donc, pour me redire, soit il existe une solution managée via le
framework, soit il faut isoler les appels non managés dans une dll
win32 pour "isoler" cette partie du reste du logiciel managé afin de
changer la partie non managée par du managé le moment venu et ne pas en
être tributaire ad vitam aeternam.
Reste une autre question : si c'est pour faire un soft .net dont
l'essentiel des fonctions se passe par du p/invoke, autant prendre un
compilo win32 ?

--

///3rL1n____
1 2 3 4