Je m'int=E9resse au code fournit par msdn qui permet d'ouvrir un lecteur
cd rom avec la fonction DeviceIoControl.
http://support.microsoft.com/kb/165721
Les 2 premiers appels de cette fonction servent =E0 locker le volume
(avec le flag FSCTL_LOCK_VOLUME) et =E0 dismount le volume (avec le flag
FSCTL_DISMOUNT_VOLUME) mais je ne comprends pas tr=E8s bien.
Quelqu'un pourrait il m'expliquer le sens de ces deux param=E8tres,
qu'est ce que veut dire "lock the volume" et "dismount the volume"..
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Bertrand
DarK wrote:
Bonjour à tous,
Je m'intéresse au code fournit par msdn qui permet d'ouvrir un lecteur cd rom avec la fonction DeviceIoControl. http://support.microsoft.com/kb/165721
Les 2 premiers appels de cette fonction servent à locker le volume (avec le flag FSCTL_LOCK_VOLUME) et à dismount le volume (avec le flag FSCTL_DISMOUNT_VOLUME) mais je ne comprends pas très bien.
Quelqu'un pourrait il m'expliquer le sens de ces deux paramètres, qu'est ce que veut dire "lock the volume" et "dismount the volume"..
C'est expliqué sur la page :
# Lock the volume by issuing the FSCTL_LOCK_VOLUME IOCTL via DeviceIoControl. If any other application or the system is using the volume, this IOCTL fails. Once this function returns successfully, the application is guaranteed that the volume is not used by anything else in the system.
C'et donc pour éviter qu'une appli fasse un autre DeviceIoControl() simultané
# Dismount the volume by issuing the FSCTL_DISMOUNT_VOLUME IOCTL. This causes the file system to remove all knowledge of the volume and to discard any internal information that it keeps regarding the volume. et http://msdn.microsoft.com/en-us/library/aa364562(VS.85).aspx
Ca ré-initialise les variables internes au niveau du driver comme les compteurs de handles utilisés et cache le volume au niveau de l'OS, notamment au niveau logique (lettre).....
DarK wrote:
Bonjour à tous,
Je m'intéresse au code fournit par msdn qui permet d'ouvrir un lecteur
cd rom avec la fonction DeviceIoControl.
http://support.microsoft.com/kb/165721
Les 2 premiers appels de cette fonction servent à locker le volume
(avec le flag FSCTL_LOCK_VOLUME) et à dismount le volume (avec le flag
FSCTL_DISMOUNT_VOLUME) mais je ne comprends pas très bien.
Quelqu'un pourrait il m'expliquer le sens de ces deux paramètres,
qu'est ce que veut dire "lock the volume" et "dismount the volume"..
C'est expliqué sur la page :
# Lock the volume by issuing the FSCTL_LOCK_VOLUME IOCTL via
DeviceIoControl.
If any other application or the system is using the volume, this IOCTL
fails.
Once this function returns successfully, the application is guaranteed
that the volume is not used by anything else in the system.
C'et donc pour éviter qu'une appli fasse un autre DeviceIoControl()
simultané
# Dismount the volume by issuing the FSCTL_DISMOUNT_VOLUME IOCTL.
This causes the file system to remove all knowledge of the volume and to
discard any internal information
that it keeps regarding the volume.
et
http://msdn.microsoft.com/en-us/library/aa364562(VS.85).aspx
Ca ré-initialise les variables internes au niveau du driver comme les
compteurs de handles utilisés et cache le volume au niveau de l'OS,
notamment au niveau logique (lettre).....
Je m'intéresse au code fournit par msdn qui permet d'ouvrir un lecteur cd rom avec la fonction DeviceIoControl. http://support.microsoft.com/kb/165721
Les 2 premiers appels de cette fonction servent à locker le volume (avec le flag FSCTL_LOCK_VOLUME) et à dismount le volume (avec le flag FSCTL_DISMOUNT_VOLUME) mais je ne comprends pas très bien.
Quelqu'un pourrait il m'expliquer le sens de ces deux paramètres, qu'est ce que veut dire "lock the volume" et "dismount the volume"..
C'est expliqué sur la page :
# Lock the volume by issuing the FSCTL_LOCK_VOLUME IOCTL via DeviceIoControl. If any other application or the system is using the volume, this IOCTL fails. Once this function returns successfully, the application is guaranteed that the volume is not used by anything else in the system.
C'et donc pour éviter qu'une appli fasse un autre DeviceIoControl() simultané
# Dismount the volume by issuing the FSCTL_DISMOUNT_VOLUME IOCTL. This causes the file system to remove all knowledge of the volume and to discard any internal information that it keeps regarding the volume. et http://msdn.microsoft.com/en-us/library/aa364562(VS.85).aspx
Ca ré-initialise les variables internes au niveau du driver comme les compteurs de handles utilisés et cache le volume au niveau de l'OS, notamment au niveau logique (lettre).....
DarK
Merci pour ces infos,
Si je peux avoir une dernière précision ca serait sympa.
J'ai du mal à saisir la fonction LockVolume, en faite, si j'ai bien compris, elle demande au système avec la fonction DeviceIoControl si aucun autre programme n'utilise le lecteur. Si c'est le cas la fonction DeviceIoControl renvoi 1 et la fonction LockVolume renvoi TRUE et le programme continu.
Mais ce que j'ai du mal a comprendre c'est la boucle for, elle servirait a appeler une deuxième fois la fonction DeviceIoControl au cas ou elle aurait renvoyé 0 la première fois..? Alors dans ce cas la fonction LockVolume patiente 5 secondes et recommence sa demande au system..? Donc vu que dans cette boucle on limite le nombre de répétition à 2, si la fonction DeviceIoControl renvoi 0 aux 2 appels alors la fonction LockVolume renvoi FALSE..?
Est ce que ce que je viens de dire est correct ?
Merci pour ces infos,
Si je peux avoir une dernière précision ca serait sympa.
J'ai du mal à saisir la fonction LockVolume, en faite, si j'ai bien
compris, elle demande au système avec la fonction DeviceIoControl si
aucun autre programme n'utilise le lecteur.
Si c'est le cas la fonction DeviceIoControl renvoi 1 et la fonction
LockVolume renvoi TRUE et le programme continu.
Mais ce que j'ai du mal a comprendre c'est la boucle for, elle
servirait a appeler une deuxième fois la fonction DeviceIoControl au
cas ou elle aurait renvoyé 0 la première fois..? Alors dans ce cas la
fonction LockVolume patiente 5 secondes et recommence sa demande au
system..?
Donc vu que dans cette boucle on limite le nombre de répétition à 2,
si la fonction DeviceIoControl renvoi 0 aux 2 appels alors la fonction
LockVolume renvoi FALSE..?
Si je peux avoir une dernière précision ca serait sympa.
J'ai du mal à saisir la fonction LockVolume, en faite, si j'ai bien compris, elle demande au système avec la fonction DeviceIoControl si aucun autre programme n'utilise le lecteur. Si c'est le cas la fonction DeviceIoControl renvoi 1 et la fonction LockVolume renvoi TRUE et le programme continu.
Mais ce que j'ai du mal a comprendre c'est la boucle for, elle servirait a appeler une deuxième fois la fonction DeviceIoControl au cas ou elle aurait renvoyé 0 la première fois..? Alors dans ce cas la fonction LockVolume patiente 5 secondes et recommence sa demande au system..? Donc vu que dans cette boucle on limite le nombre de répétition à 2, si la fonction DeviceIoControl renvoi 0 aux 2 appels alors la fonction LockVolume renvoi FALSE..?
Est ce que ce que je viens de dire est correct ?
Eric
"DarK" wrote in message news:
Mais ce que j'ai du mal a comprendre c'est la boucle for, elle servirait a appeler une deuxième fois la fonction DeviceIoControl au cas ou elle aurait renvoyé 0 la première fois..? Alors dans ce cas la fonction LockVolume patiente 5 secondes et recommence sa demande au system..? Donc vu que dans cette boucle on limite le nombre de répétition à 2, si la fonction DeviceIoControl renvoi 0 aux 2 appels alors la fonction LockVolume renvoi FALSE..? Est ce que ce que je viens de dire est correct ?
Non, tu t'es trompé : c'est 20 fois, pas 2. ça essaie 2 fois par seconde, pour attendre un peu au cas où un autre programme ferait des opérations disque et aurait locké le lecteur pendant 10 secondes
"DarK" <darkthc@hotmail.com> wrote in message
news:39506b29-3dcd-4cc8-88ba-2f6d177a4475@p2g2000prn.googlegroups.com...
Mais ce que j'ai du mal a comprendre c'est la boucle for, elle
servirait a appeler une deuxième fois la fonction DeviceIoControl au
cas ou elle aurait renvoyé 0 la première fois..? Alors dans ce cas la
fonction LockVolume patiente 5 secondes et recommence sa demande au
system..?
Donc vu que dans cette boucle on limite le nombre de répétition à 2,
si la fonction DeviceIoControl renvoi 0 aux 2 appels alors la fonction
LockVolume renvoi FALSE..?
Est ce que ce que je viens de dire est correct ?
Non, tu t'es trompé : c'est 20 fois, pas 2.
ça essaie 2 fois par seconde, pour attendre un peu au cas où un autre
programme ferait des opérations disque et aurait locké le lecteur pendant 10
secondes
Mais ce que j'ai du mal a comprendre c'est la boucle for, elle servirait a appeler une deuxième fois la fonction DeviceIoControl au cas ou elle aurait renvoyé 0 la première fois..? Alors dans ce cas la fonction LockVolume patiente 5 secondes et recommence sa demande au system..? Donc vu que dans cette boucle on limite le nombre de répétition à 2, si la fonction DeviceIoControl renvoi 0 aux 2 appels alors la fonction LockVolume renvoi FALSE..? Est ce que ce que je viens de dire est correct ?
Non, tu t'es trompé : c'est 20 fois, pas 2. ça essaie 2 fois par seconde, pour attendre un peu au cas où un autre programme ferait des opérations disque et aurait locké le lecteur pendant 10 secondes
DarK
On 3 jan, 15:40, "Eric" wrote:
"DarK" wrote in message
news:
>Mais ce que j'ai du mal a comprendre c'est la boucle for, elle >servirait a appeler une deuxième fois la fonction DeviceIoControl au >cas ou elle aurait renvoyé 0 la première fois..? Alors dans ce cas l a >fonction LockVolume patiente 5 secondes et recommence sa demande au >system..? >Donc vu que dans cette boucle on limite le nombre de répétition à 2, >si la fonction DeviceIoControl renvoi 0 aux 2 appels alors la fonction >LockVolume renvoi FALSE..? >Est ce que ce que je viens de dire est correct ?
Non, tu t'es trompé : c'est 20 fois, pas 2. ça essaie 2 fois par seconde, pour attendre un peu au cas où un autre programme ferait des opérations disque et aurait locké le lecteur pen dant 10 secondes
LOCK_RETRIES = 20 exact, mais comment sais tu que ça essaie 2 fois par seconde ?
On 3 jan, 15:40, "Eric" <e...@riconospam.com> wrote:
>Mais ce que j'ai du mal a comprendre c'est la boucle for, elle
>servirait a appeler une deuxième fois la fonction DeviceIoControl au
>cas ou elle aurait renvoyé 0 la première fois..? Alors dans ce cas l a
>fonction LockVolume patiente 5 secondes et recommence sa demande au
>system..?
>Donc vu que dans cette boucle on limite le nombre de répétition à 2,
>si la fonction DeviceIoControl renvoi 0 aux 2 appels alors la fonction
>LockVolume renvoi FALSE..?
>Est ce que ce que je viens de dire est correct ?
Non, tu t'es trompé : c'est 20 fois, pas 2.
ça essaie 2 fois par seconde, pour attendre un peu au cas où un autre
programme ferait des opérations disque et aurait locké le lecteur pen dant 10
secondes
LOCK_RETRIES = 20 exact, mais comment sais tu que ça essaie 2 fois par
seconde ?
>Mais ce que j'ai du mal a comprendre c'est la boucle for, elle >servirait a appeler une deuxième fois la fonction DeviceIoControl au >cas ou elle aurait renvoyé 0 la première fois..? Alors dans ce cas l a >fonction LockVolume patiente 5 secondes et recommence sa demande au >system..? >Donc vu que dans cette boucle on limite le nombre de répétition à 2, >si la fonction DeviceIoControl renvoi 0 aux 2 appels alors la fonction >LockVolume renvoi FALSE..? >Est ce que ce que je viens de dire est correct ?
Non, tu t'es trompé : c'est 20 fois, pas 2. ça essaie 2 fois par seconde, pour attendre un peu au cas où un autre programme ferait des opérations disque et aurait locké le lecteur pen dant 10 secondes
LOCK_RETRIES = 20 exact, mais comment sais tu que ça essaie 2 fois par seconde ?
Eric
"DarK" wrote in message news: On 3 jan, 15:40, "Eric" wrote:
Non, tu t'es trompé : c'est 20 fois, pas 2. ça essaie 2 fois par seconde, pour attendre un peu au cas où un autre programme ferait des opérations disque et aurait locké le lecteur pendant 10 secondes
LOCK_RETRIES = 20 exact, mais comment sais tu que ça essaie 2 fois par seconde ?
à cause du Sleep(dwSleepAmount); (500 ms)
"DarK" <darkthc@hotmail.com> wrote in message
news:9bb13334-e7bf-4936-a75b-630031ddf66d@p2g2000prf.googlegroups.com...
On 3 jan, 15:40, "Eric" <e...@riconospam.com> wrote:
Non, tu t'es trompé : c'est 20 fois, pas 2.
ça essaie 2 fois par seconde, pour attendre un peu au cas où un autre
programme ferait des opérations disque et aurait locké le lecteur pendant
10
secondes
LOCK_RETRIES = 20 exact, mais comment sais tu que ça essaie 2 fois par
seconde ?
"DarK" wrote in message news: On 3 jan, 15:40, "Eric" wrote:
Non, tu t'es trompé : c'est 20 fois, pas 2. ça essaie 2 fois par seconde, pour attendre un peu au cas où un autre programme ferait des opérations disque et aurait locké le lecteur pendant 10 secondes
LOCK_RETRIES = 20 exact, mais comment sais tu que ça essaie 2 fois par seconde ?