OVH Cloud OVH Cloud

Déconnexion de matériel USB

7 réponses
Avatar
Kam
Salut,
j'ai un disque dur sur port USB qui me sert à faire des sauvegardes.
Jusque la, tout va bien.
Par contre, j'aimerais pouvoir automatiser la déconnection de ce disque.
Actuellement, je suis obligé de cliquer sur l'iocne de 'Déconnexion ou
éjection de matériel' (celle avec la fleche verte au dessus d'une carte
style PCMCIA), puis d'arrêter mon périphérique de stockage.

Quelle est la dll ou le composant qui permet de faire ça en programmant ?

Cela permettrait de plannifier dans le plannificateur de taches (logique)
une déconnection du matos une fois les sauvegardes finies.

Voili voila.
Merci d'avance !

Kam

Adresse mail : camille AT ankama DOT com

7 réponses

Avatar
Thierry
Bonjour,

La méthode propre consisterait probablement a
appeller CM_Request_Device_Eject.

Plus crado mais ça marche (chez moi en tout cas :-)

const char *szDeviceDesc = "MiniUSB Wireless Adapter";
HWND hWndHotPlug = FindWindow(NULL, "Déconnexion ou éjection de matériel");

if (hWndHotPlug)
{
HWND hDeviceList = GetDlgItem(hWndHotPlug, 0x12D);

int niIndex = SendMessage(hDeviceList, LB_FINDSTRING, -1, (LPARAM)
szDeviceDesc);

if (niIndex != CB_ERR)
{
SendMessage(hDeviceList, LB_SETCURSEL, niIndex, 0);
PostMessage(hWndHotPlug, WM_COMMAND, 0x131, 0); // "Arreter"

Sleep(1000);

HWND hConfirm = FindWindow(NULL, "Arrêt d'un périphérique
matériel");
{
int niIndex2 = SendMessage(hConfirm, LB_FINDSTRING, -1,
(LPARAM) szDeviceDesc);

if (niIndex2 != CB_ERR)
{
SendMessage(hDeviceList, LB_SETCURSEL, niIndex2, 0);
SendMessage(hConfirm, WM_COMMAND, 0x1, 0); // "OK"
}
}
}
}

C'est l'ancetre de l'automation :-)

Salut,
j'ai un disque dur sur port USB qui me sert à faire des sauvegardes.
Jusque la, tout va bien.
Par contre, j'aimerais pouvoir automatiser la déconnection de ce disque.
Actuellement, je suis obligé de cliquer sur l'iocne de 'Déconnexion ou
éjection de matériel' (celle avec la fleche verte au dessus d'une carte
style PCMCIA), puis d'arrêter mon périphérique de stockage.

Quelle est la dll ou le composant qui permet de faire ça en programmant ?

Cela permettrait de plannifier dans le plannificateur de taches (logique)
une déconnection du matos une fois les sauvegardes finies.

Voili voila.
Merci d'avance !

Kam

Adresse mail : camille AT ankama DOT com







--
« Willy, j'ai mangé le chat. »
Avatar
Thierry
Bonjour,

La méthode propre consisterait probablement a
appeller CM_Request_Device_Eject.

Plus crado mais ça marche (chez moi en tout cas :-) :
const char *szDeviceDesc = "MiniUSB Wireless Adapter";
HWND hWndHotPlug = FindWindow(NULL, "Déconnexion ou éjection de matériel");

if (hWndHotPlug)
{
HWND hDeviceList = GetDlgItem(hWndHotPlug, 0x12D);

int niIndex = SendMessage(hDeviceList, LB_FINDSTRING, -1, (LPARAM)
szDeviceDesc);

if (niIndex != CB_ERR)
{
SendMessage(hDeviceList, LB_SETCURSEL, niIndex, 0);
PostMessage(hWndHotPlug, WM_COMMAND, 0x131, 0); // "Arreter"

Sleep(1000);

HWND hConfirm = FindWindow(NULL, "Arrêt d'un périphérique
matériel");
{
int niIndex2 = SendMessage(hConfirm, LB_FINDSTRING, -1,
(LPARAM) szDeviceDesc);

if (niIndex2 != CB_ERR)
{
SendMessage(hDeviceList, LB_SETCURSEL, niIndex2, 0);
SendMessage(hConfirm, WM_COMMAND, 0x1, 0); // "OK"
}
}
}
}

Salut,
j'ai un disque dur sur port USB qui me sert à faire des sauvegardes.
Jusque la, tout va bien.
Par contre, j'aimerais pouvoir automatiser la déconnection de ce disque.
Actuellement, je suis obligé de cliquer sur l'iocne de 'Déconnexion ou
éjection de matériel' (celle avec la fleche verte au dessus d'une carte
style PCMCIA), puis d'arrêter mon périphérique de stockage.

Quelle est la dll ou le composant qui permet de faire ça en programmant ?

Cela permettrait de plannifier dans le plannificateur de taches (logique)
une déconnection du matos une fois les sauvegardes finies.

Voili voila.
Merci d'avance !

Kam

Adresse mail : camille AT ankama DOT com










--
« Willy, j'ai mangé le chat. »
Avatar
Kam
Bon, je vais regarder le CM_Request_Device_Eject.
C'est pas que j'aime pas ta méthode, mais..... un peu bourrine, quandmême :)

Merci beaucoup pour le CM_...

Kam

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

Bonjour,

La méthode propre consisterait probablement a
appeller CM_Request_Device_Eject.

Plus crado mais ça marche (chez moi en tout cas :-) :
const char *szDeviceDesc = "MiniUSB Wireless Adapter";
HWND hWndHotPlug = FindWindow(NULL, "Déconnexion ou éjection de


matériel");

if (hWndHotPlug)
{
HWND hDeviceList = GetDlgItem(hWndHotPlug, 0x12D);

int niIndex = SendMessage(hDeviceList, LB_FINDSTRING, -1, (LPARAM)
szDeviceDesc);

if (niIndex != CB_ERR)
{
SendMessage(hDeviceList, LB_SETCURSEL, niIndex, 0);
PostMessage(hWndHotPlug, WM_COMMAND, 0x131, 0); // "Arreter"

Sleep(1000);

HWND hConfirm = FindWindow(NULL, "Arrêt d'un périphérique
matériel");
{
int niIndex2 = SendMessage(hConfirm, LB_FINDSTRING, -1,
(LPARAM) szDeviceDesc);

if (niIndex2 != CB_ERR)
{
SendMessage(hDeviceList, LB_SETCURSEL, niIndex2, 0);
SendMessage(hConfirm, WM_COMMAND, 0x1, 0); // "OK"
}
}
}
}

> Salut,
> j'ai un disque dur sur port USB qui me sert à faire des sauvegardes.
> Jusque la, tout va bien.
> Par contre, j'aimerais pouvoir automatiser la déconnection de ce disque.
> Actuellement, je suis obligé de cliquer sur l'iocne de 'Déconnexion ou
> éjection de matériel' (celle avec la fleche verte au dessus d'une carte
> style PCMCIA), puis d'arrêter mon périphérique de stockage.
>
> Quelle est la dll ou le composant qui permet de faire ça en programmant


?
>
> Cela permettrait de plannifier dans le plannificateur de taches


(logique)
> une déconnection du matos une fois les sauvegardes finies.
>
> Voili voila.
> Merci d'avance !
>
> Kam
>
> Adresse mail : camille AT ankama DOT com
>
>






--
« Willy, j'ai mangé le chat. »


Avatar
Thierry
Bonjour,

Kam a écrit :

Bon, je vais regarder le CM_Request_Device_Eject.
C'est pas que j'aime pas ta méthode, mais..... un peu bourrine,
quandmême :)



Si ça marche sur la machine sur laquelle ca doit fonctionner, c'est le
principal :-)

Merci beaucoup pour le CM_...



Tu peux te baser sur ces samples du DDK : NTDDKsrcgeneralsetup

--
« Willy, j'ai mangé le chat. »
Avatar
Thierry
Bonjour,

Ca doit pouvoir se faire avec WMI aussi (avec même un petit scrit VBS), à
condition (il me semble) que ca soit un 2K ou plus.

--
« Willy, j'ai mangé le chat. »
Avatar
François Müller
"Kam" escribió en el mensaje
news:40235935$0$28115$
| Bon, je vais regarder le CM_Request_Device_Eject.
| C'est pas que j'aime pas ta méthode, mais..... un peu bourrine, quandmême
:)

A ma connaissance (et essai) l'eject sur un disque USB ne fait que retourner
une erreur.

F.
Avatar
Christian ASTOR
François Müller a écrit:

A ma connaissance (et essai) l'eject sur un disque USB ne fait que retourner
une erreur.



Je n'ai jamais testé moi-même, mais on peut trouver ds Google Groups que
certains y sont arrivés (en prenant le noeud parent notamment)...