PDA

View Full Version : [windows] accesso all' hard disk a basso livello in usermode?


nuovoUtente86
27-09-2008, 11:27
Mi sto interessando (o meglio approcciando) in questo periodo allo sviluppo di un software (per prova e curiosità piu che per utilità) che agisca a basso livello sull' hard disk per operare ad esempio una partizione o recupero dati. Il primo problema che mi sono posto è se bisogna accedere al supporto, per tali operazioni, in user o kernel mode. Teoricamente le operazioni di I/O dovrebbero essere gestite dal kernel ma da quel poco che ho trovato in giro i software che lavorano a tale livello lo fanno in modalità user quindi gestendo il tutto direttamente, ma ho anche letto che ad esempio nella versione 64 bit di Vista ciò non dovrebbe essere possibile per via delle limitazioni del patchguard. Quindi se effettivamente ciò va gestito in modalità user come dovrei interfacciarmi all' hardware (disco in questo caso) senza usare le syscall?

andbin
27-09-2008, 13:24
che agisca a basso livello sull' hard disk per operare ad esempio una partizione o recupero dati.Conosci bene come usare, in generale, le API Win32? Conosci bene come funzionano i file system es. FAT32, ecc...?

Se hai risposto sì ad entrambe, allora inizia a vedere la documentazione della funzione CreateFile (http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx) (in particolare dove parla di "Physical Disks and Volumes") e anche della funzione DeviceIoControl (http://msdn.microsoft.com/en-us/library/aa363216(VS.85).aspx).

nuovoUtente86
27-09-2008, 14:47
Conosci bene come usare, in generale, le API Win32? Conosci bene come funzionano i file system es. FAT32, ecc...?

Se hai risposto sì ad entrambe, allora inizia a vedere la documentazione della funzione CreateFile (http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx) (in particolare dove parla di "Physical Disks and Volumes") e anche della funzione DeviceIoControl (http://msdn.microsoft.com/en-us/library/aa363216(VS.85).aspx).

Ho già utilizzato diverse volte le win32 e conosco i diversi tipi di FS.
Avevo anche già utilizzato la funzione CreateFile ma non con la possibilità di accedere direttamente ad un volume.
Da quello che ho letto nel link che mi hai passato fino ad Xp si puo' accedere fisicamente al volume, mentre non è piu' possibile farlo in Vista e Server 2008.
Qui parla proprio dei problemi per i programmi che operano a basso livello http://support.microsoft.com/kb/942448 con le nuove modifiche attuate.
La cosa che mi ha stupito molto è come venga dato l' accesso diretto all' hardware in userMode