deck_bsd
Messages postés1243Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention 3 août 2016
-
8 août 2006 à 15:48
deck_bsd
Messages postés1243Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention 3 août 2016
-
9 août 2006 à 18:48
deck_bsd
Messages postés1243Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention 3 août 20162 8 août 2006 à 16:20
Ben en fait non , je comprend pas vraiment la source de vecchio. bon ben je vai faire sans et esseye de trouver comment fonctionne IOCTL_DISK_GET_PARTITION_INFO
Vous n’avez pas trouvé la réponse que vous recherchez ?
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 8 août 2006 à 23:09
Tu rigoles, elle est pas en asm... Si tu veux une explication sur un endroit précis, t'a qu'a demander et je te fais un devis ;)
Un site qui m'a bien servi dans l'élaboration de la source en question:
http://www.bellamyjc.org/, et tu va dans multiboot
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 8 août 2006 à 23:16
Bah. C'est peut-être juste la première partie du code avec les fonctions de BruNews qui l'a découragé :) Si c'est le cas deck_bsd, je te rassure, le reste du code n'a vraiment rien de très compliqué. Fouille bien, c'est très interessent comme code.
Cependant vecchio, tu utilise bien IOCTL_DISK_GET_PARTITION_INFO mais dans la documentation de MSDN, il est clairement indiqué qu'elle est obsolete. Y'a pas de danger à l'utiliser? Par danger je veux dire, renvoie de fausses données par exemple.
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 8 août 2006 à 23:33
Je l'utilise... oui et non!
Voici les seules lignes ou je l'utilise:
PARTITION_INFORMATION PartitionInformation;
DeviceIoControl(hDevice, IOCTL_DISK_GET_PARTITION_INFO, 0, 0,
&PartitionInformation, sizeof PartitionInformation, &d, 0);
En gros cette instruction ne sert à rien, ca doit être un vieux reste que j'ai oublié d'enlever.
Donc finalement on peut dire que je l'utilise pas ;)
deck_bsd
Messages postés1243Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention 3 août 20162 9 août 2006 à 10:09
Lol oui vecchio , j'ai un peut mieu regardé ta source, il est vrai qu'elle n'est pas en asm. Cependant elle reste très flou pour moi. J'ai +- compris comment utiliser DeviceIoControl en lisant la msdn , cependant je ne voi pas comment elle va m'aider à récupérer le type de la partition (primaire/logique) Surtout que tu vien de dire que dans ton code, ces lignes ne servent a rien mdr . Dans ta source vecchio , je voi que tu fait référence à des valeur, mais pourquoi celle là ? deplus tu utilise bcp de chose que je comprend pas, par exemple Offset, ... Enfin , c'est encore très très flou mais j'espèr y arriver un jour. Je vai de ce pas lire ce qu'il ai écrit sur le site de bellamy jc :D
deck_bsd
Messages postés1243Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention 3 août 20162 9 août 2006 à 12:12
Voila j'ai lu la theorie sur bellamyjc, très intéressent , cependant , cela ne fait que m'embrouiller encore plus. Si je comprend pour aller voir le type de partition je doit aller lire a l'adresse 04 et a l'offset 1C2 , ... ouai sauve qu'il n'explique pas xe qu'est un offset et il ne dit pas non plus si ce tableau est un exemple pour les partitions qu'il à crée (ce que je pense) . Surtout qu'il y à 4 offset ( qui est le "max" de partiton primaire que l'on peut créer si j'ai bien compris).
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 9 août 2006 à 12:41
Offset ca veut dire position en gros.
Dans ma source j'ai cette structure:
typedef struct tagTABLE_ENTRY
{
BYTE state;
BYTE headBegin;
WORD sectorCylinderBegin;
BYTE partitionType;
BYTE headEnd;
WORD sectorCylinderEnd;
DWORD distBetweenSectAndBootSect;
DWORD partitionSize; // En secteurs
} TABLE_ENTRY, *LPTABLE_ENTRY;
state est à l'offset 0, headBegin à l'offset 1, partitionType est à 4
partitionType est bien à l'adresse 4, mais le tout est de trouver l'adresse de base, qui est la table de partition. Donc en gros tu commences au MBR, puis tu parcours tout le disque.
Il y a aussi un moyen plus simple, mais ca ne marchera qu'avec les partitions qui on une lettre sous Windows.
Par exemple pour C:\\, tu l'ouvres avec CreateFile, comme ca tu sera directement sur la table de partition (enfin je crois, à vérifier)
Mais avec mon code tout est déja fait, je te conseille d'essayer de le comprendre
deck_bsd
Messages postés1243Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention 3 août 20162 9 août 2006 à 17:53
ouiiiiii ok bon en faite ta structure c'est la table d'entrée on est bien daccord. Donc tu fait un handle du volume avec CreateFile et ensuite de la tu fait un ReadFile des 512 1er octet dans un buffer et ensuite ben tu affecte directement la mémoire du buffer dans ta structure ... ouaiiiii c'est claire maintenant, seulement , comme j'ai mis dans le doc que je t'ai envoyé , c'est le traitement des données que je comprend pas :(
deck_bsd
Messages postés1243Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention 3 août 20162 9 août 2006 à 18:48
et la je vien de comprendre tes valeur 0,0x5,0xF c'est les code hexa du type de partition comme indiqué sur le site, oui oui , voila cela ce met en place doucement :D