Montați dispozitivul de înlocuire a software-ului disk mountvol

Acest articol prezintă modul de creare a unui program pentru montarea unităților de disc într-un director. În mod prestabilit, Windows montează automat mediile nedemontabile - dacă conectați o nouă unitate de hard disk la computer, după ce bootați sistemul de operare și instalați driverele necesare, îl puteți vedea în explorator. În sistemele de operare UNIX, este posibilă montarea unităților de hard disk într-un director, așa-numitele puncte de montare. Începând cu Windows NT 4.0, sistemul de operare include utilitarul mountvol.exe. care prin interfața liniei de comandă vă permite să creați, să ștergeți și să afișați o listă de puncte de conectare pe disc. Rezultatul pe care îl vedeți în imagine:







După o scurtă lucrare cu acest utilitar, am vrut să pun în aplicare caracteristicile furnizate eu, programat. Primul pas a fost să aflăm ce funcții API sunt utilizate de mountvol.exe, în acest scop a fost folosit programul Dependency Walker inclus în oferta de mediu de dezvoltare.

Din rezultatul lucrării Dependency Walker, vedem ce funcție API folosește mountvol.exe. Pentru a crea programul de probă, am folosit mediul de dezvoltare al aplicației MS Visual C ++ 6.0, tipul de aplicație "Win 32 Console Application". Pentru a începe, să analizăm funcțiile care vor fi utilizate în aplicație și astfel:

Această funcție este utilizată pentru a începe scanarea computerului pentru volumul, valoarea returnată - un mâner, care este folosit pentru recuperarea ulterioară, variabila lpszVolumeName returnează un pointer la buffer-ul care conține un identificator unic (GUID) din prima găsit a volumului.

Pentru a căuta în continuare, utilizați funcția:







Primul parametru este mânerul obținut prin apelarea funcției FindFirstVolume, identificatorii identificați ulterior (GUID) ai volumelor sunt returnați la lpszVolumeName. Pentru a finaliza căutarea, trebuie să apelați funcția:

Singurul parametru este mânerul de căutare.
Pentru a determina tipul volumului, am folosit funcția:

Parametrul său este identificatorul volumului, valoarea returnată este:

DRIVE_UNKNOWN - Tip necunoscut.
DRIVE_NO_ROOT_DIR - Nu există puncte de conectare.
DRIVE_REMOVABLE - Disc detașabil.
DRIVE_FIXED - unitate fixă.
DRIVE_REMOTE - o unitate de la distanță sau de rețea.
DRIVE_CDROM - unitate CD-ROM.
DRIVE_RAMDISK este un disc RAM.

Pentru a defini sistemul de fișiere și eticheta de volum, funcția a fost utilizată:

Primul parametru este un identificator unic de volum, eticheta de volum este returnată parametrului lpVolumeNameBuffer și un indicator către tampon care conține numele sistemului de fișiere este returnat parametrului lpFileSystemNameBuffer.

De asemenea, am găsit o altă modalitate de a obține identificatori unici de volume, în acest scop am folosit un set de funcții GetLogicalDrives și GetVolumeNameForVolumeMountPoint, în detaliu despre parametrii lor:

Funcția returnează o mască bit care conține toate volumele disponibile în sistem.

Funcția returnează un identificator de volume unic la punctul de montare.

Pentru a elimina punctul de montare, utilizați funcția:

Parametrul său este punctul de montare.

Și cea mai importantă funcție pentru montarea volumelor:

Primul parametru este punctul de montare, în acest caz este un director, de exemplu "C: \\ mnt \\", al doilea parametru este un identificator unic de volum.

Atenție: Punctul în care va fi montat volumul, în acest caz directorul trebuie să fie gol! Această condiție nu se aplică conținutului volumului montat.

Și acum încercăm totul împreună. Mai jos este codul sursă al programului care afișează primele două moduri identificatori volume unice de tip sistem de fișiere și eticheta de volum, atunci face dezmembrarea unui anumit disc și apoi montați la punctul C: \\ mnt \\, după o pauză, se întoarce la punctul inițial.

Rezultatul programului pe care îl puteți vedea în figură, în viitor aș dori să creez un program care, pentru comoditate, va avea o interfață grafică.

Distribuiți acest articol cu ​​prietenii dvs.:







Articole similare

Trimiteți-le prietenilor: