begin process at 2012 02 17 03:18:20
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > CLASSE SUR LES DISQUES/PARTITIONS ==> OBTENTIONS D'INFOS (CLUSTERS, TAILLE, NOM, SECTEURS...)

CLASSE SUR LES DISQUES/PARTITIONS ==> OBTENTIONS D'INFOS (CLUSTERS, TAILLE, NOM, SECTEURS...)


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichier / Disque Classé sous :disque, partition, deviceiocontrol, logique, physique Niveau :Initié Date de création :19/11/2006 Date de mise à jour :15/12/2006 21:48:39 Vu / téléchargé :6 447 / 996

Auteur : violent_ken

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (21)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Ce code est une classe qui permet de :
-lister les lecteurs (partitions)
-lister les disques physiques
-obtenir des infos sur les disques physiques
-obtenir des infos sur les partitions

Utilisation d'API uniquement (pas de registre ni de WMI).

Source


 Conclusion

N'hésitez pas à commenter et à noter !

@+

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

26 novembre 2006 16:25:39 :
Corrigé le bug vu par Galain, correction du nombre de secteurs et ajout de 2 infos (PartitionLenght, Secteurs logiques/physiques)
15 décembre 2006 21:48:39 :
M'étais planté dans le passage de flags... Voir http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/creating_and_opening_files.asp

 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) UTILITAIRE DE SANITIZATION DES DISQUES DURS/FICHIERS (SUPPRE...
Source avec Zip Source avec une capture Source .NET (Dotnet) SIMPLE SHUTDOWN SCHEDULER : ARRÊTS PLANIFIÉS (LOCAL OU REMOT...
Source avec Zip Source .NET (Dotnet) COMMENT DÉMARRER UN PROCESSUS SUR PC DISTANT DE MANIÈRE CACH...
Source avec Zip Source avec une capture Source .NET (Dotnet) YET ANOTHER (REMOTE) PROCESS MONITOR
Source avec Zip Source avec une capture Source .NET (Dotnet) COMMENT DÉTECTER LES PROCESSUS CACHÉS (VIRUS, ROOTKITS...) +...

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) MODIFIER LES EXTENSION DES FICHIERS par okosa
ROUTINE DIR RÉCURSIVE POUR OBTENIR LA LISTE DE TOUS LES FICH... par kerisolde
Source avec Zip Source avec une capture FILE,SECURITY,FICHIER par okosa
Source avec Zip Source avec une capture Source .NET (Dotnet) PATCHEUR DE FICHIER par tototh
Source avec Zip Source avec une capture LECTURE DES INFORMATIONS DES DISQUES COMPOSANT UN ENSEMBLE R... par jack

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture DÉPLACEMENT AVEC FLÈCHES DANS UN PAVÉ DE TEXTBOX 9X9 DYNAMIQ... par EhJoe
Source avec Zip Source .NET (Dotnet) RÉSOLUTION DU MASTERMIND par alpha5
Source avec Zip Source .NET (Dotnet) ACCÈS DIRECT DISQUES ET PARTITIONS VB NET par Galain
Source avec Zip ANALYSE DISQUES ET PARTITIONS par Galain
Source avec Zip Source avec une capture DRIVEVIEW ==> ARBORESCENCE AFFICHANT LES LECTEURS LOGIQUES E... par violent_ken

Commentaires et avis

Commentaire de Galain le 19/11/2006 23:06:19

Salut Violent_Ken

comme je t'ai déjà donné mon avis sur ce code dans les commentaires de "Accès Direct Disque" je vais te noter
Petit bémol = offset de départ pour un lecteur de disquette est négatif : mais tu vas trouver c'est sûr donc 9/10
Bravo : code très clair et bien structuré  

Commentaire de violent_ken le 19/11/2006 23:41:51

Je regarderais demain ce qu'il en est.
Merci de m'avoir signalé cela.

@+ et merci pour la note ^^

Commentaire de Galain le 19/11/2006 23:42:06

Les infos offset de départ et secteurs cachés pour les partitions sont erronnées.Je soupçonne les LARGE_INTEGER de te jouer des tours
Je vais chercher la soluce
A +

Commentaire de Galain le 19/11/2006 23:55:52

Tu déclares des valeurs en temps que Currency dans certaines structures. Tu devrais les déclarer en tant que LARGE_INTEGER ( 2 LONG 32 bits signés) et convertir ces valeurs en Currency
tu as le même problème que moi dans Acces Direct Disque mais à l'envers
visual Basic 6.0 n'accepte pas les valeurs 64 bits non signées ni signées : je pense que cela est lasource de nos problèmes
Je vais regarder

A+

Commentaire de Galain le 22/11/2006 07:44:17

Salut Violent_Ken
IOCTL_DISK_GET_PARTITION_INFO serait maintenant un code obsolète ( au conditionnel car je n'ai point la confirmation) et il existerait un code IOCTL_DISK_GET_PARTITION_INFO_EX mis à jour  
Ce doit être la source des informations erronées pour "offset de départ" et "secteurs cachés" de la classe
Cela n'a rien à voir avec les LARGE_INTEGER et Currency comme dit dans mes précédents posts

Commentaire de violent_ken le 22/11/2006 13:35:38

Salut, j'avais pas eu le temps de vraiment re-regarder cette classe (posté une autre source hier), mais c'est vrai que le ControlCode est "obsolète" selon MSDN.

Pour la version -EX, j'avais essayé mais je n'étais pas arrivé à la faire marcher, donc j'avais laissé comme çà...

Donc effectivement, çà se peut bien que le problème vienne de là. Je vais voir çà ce soir.
Merci, @+

Commentaire de Galain le 22/11/2006 23:15:55

Salut Violent_Ken
J'ai tout tenté pour faire fonctionner IOCTL_DISK_GET_PARTITION_INFO_EX mais c'est un échec pour moi pour l'instant .N'est-il pas plus simple de récupérer les infos de partitions en lisant directement le secteur de partitions avec Readfile? Qu'en penses-tu ?
il faut dire que la doc MSDN est un peu floue sur ce domaine précis et pas évidente à mettre en oeuvre

A+

Commentaire de violent_ken le 23/11/2006 11:51:22

Salut, concernant la doc MSDN, je n'ai pas réussi non plus à utilisr ce ControlCode.

Et dans la structure C de PARTITION_INFORMATION_EX, il y a çà:
  union {
    PARTITION_INFORMATION_MBR Mbr;
    PARTITION_INFORMATION_GPT Gpt;
  };
qui me semble difficile à traduire en VB...
Et j'ai trouvé aucun exemple sur le Web de l'utilisation de ce controlcode en VB.


"N'est-il pas plus simple de récupérer les infos de partitions en lisant directement le secteur de partitions avec Readfile" ==> c'est à dire ?

@+

Commentaire de Galain le 24/11/2006 07:15:19

Salut Violent_Ken
Désolé de ne pas t'avoir répondu hier mais je suis rentré très tard  
"N'est-il pas plus simple de récupérer les infos de partitions en lisant directement le secteur de partitions avec Readfile" ==> c'est à dire ?

La feuille Introfrm du projet "Acces Direct Disque" contient une procédure Partable qui lit les infos de partition en utilisant Readfile pour le premier secteur d'un disque dur.Elle ne traite pas toutes les infos disponibles car je ne les utilise pas toutes mais avec la documentation de la structure d'une table de partition cela ne devrait poser aucun problème.

A+

Commentaire de violent_ken le 24/11/2006 18:53:23

Salut, je vais regarder ta source de près^^
@+

Commentaire de violent_ken le 26/11/2006 11:59:44

Salut, tu as codé des trucs dans ce genre :

    If fat% = 12 Then
        TotalSectors = CCur(readoctet(19)) + CCur(CCur(readoctet(20)) * 256)
    Else
        TotalSectors = CCur(readoctet(32)) + CCur(CCur(readoctet(33)) * 256) + CCur(CCur(readoctet(34)) * 65536) + CCur(CCur(readoctet(35)) * 16777216)
    End If

Comment as tu pu déterminer ces formules ? (d'où proviennent les numéros 32,35,19...)

Merci, @+

Commentaire de Galain le 26/11/2006 13:45:03

Salut Violent_Ken
Dans le cas du post précédent les formules comme tu dit découlent directement de l'organisation des informations contenues dans le secteur de boot d'une partition ou dans le Master Boot Record (MBR ou Secteur de partition)
Le tableau Readoctet(0 to 511) contient au format Byte les 512 octets du secteur 0  de la partition ou du MBR.
Dans l'exemple que tu me signales le nombre total de secteurs en Fat12 est stocké dans les octets 19 et 20 du secteur et en FAT16 ou 32 dans les octets 32,33,34 et 35 de ce même secteur.Etant donné que les poids faibles sont au début cela explique que le second soit multiplié par 256,le troisième par 65536,etc...
La source n'est pas difficile à comprendre mais il faut connaître l'organisation des données dans les différents secteurs (secteur de partition,secteur de boot de partition,secteur de la FAt,etc....)
tu me parlais de winhex dans un précédent post : leur site propose mais en anglais un tuto sur l'organisation des partitions FAT.
Bases-toi aussi sur la feuille Bootfrm du projet qui te donnes la structure de ce secteur de boot en Fat12,16 et 32 et en NTFS

De plus tu me disais:
Et dans la structure C de PARTITION_INFORMATION_EX, il y a çà:
  union {
    PARTITION_INFORMATION_MBR Mbr;
    PARTITION_INFORMATION_GPT Gpt;
  };
qui me semble difficile à traduire en VB...

une union en C++ est la réunion de 2 structures différentes dans le même espace mémoire et dont la taille est celle de la plus grande structure
Exemple basique
    union {
        valeur4 as long;
        octet(4) as byte;
    ];
Dans le premier cas le paramètre est un LONG sur 4 octets
Dans le second cas les paramètres sont 4 valeurs au format BYTE
Par contre la structure maitre possède un paramètre lui disant d'utiliser soit le LONG soit les 4 BYTE

Les informations de partitions sont au format MBR (Master Boot Record) ou GPT (GUID Partition Table).
Le code IOCTL_DISK_GET_PARTITION_INFO-EX gére les 2 types de partitions alors que celui sans EX ne gère que les partions MBR
Dans ton code j'ai réussi à avoir l'information correcte pour les secteurs cachés mais pas pour l'offset de départ.Le problème vient de la traduction des types de variables C en types de variables VB.Le type CURRENCY est à éviter dans ce cas-là car il est directement manipulé par les Apis et est source d'erreur.
Voila où j'en suis mais on avance vers la solution

A+

Commentaire de violent_ken le 26/11/2006 13:58:16

Re,

oui voilà, je cherchais justement l'organisation (d'où les chiffres 32,35...) du MBR.
Ceci http://www.x-ways.net/winhex/kb/ sera utile.



"Par contre la structure maitre possède un paramètre lui disant d'utiliser soit le LONG soit les 4 BYTE"
==> Ah d'accord, je vois l'intérêt de la structure avec Union.


"Le problème vient de la traduction des types de variables C en types de variables VB" ==> Hum, je tenterais de repasser en LARGE_INTEGER.

Merci, @+

Commentaire de Galain le 26/11/2006 14:16:42

Salut Violent_Ken
"Le problème vient de la traduction des types de variables C en types de variables VB" ==> Hum, je tenterais de repasser en LARGE_INTEGER.

Ne cherches plus : j'ai trouvé
Peux-tu m'envoyer un message privé à Galain avec ton adresse email et je t'envoie la source avec les infos correctes
Lorsque tu cherches à avoir les valeur .StartingOffset et .HiddenSectors tu n'as pas pris la bonne structure dans le With
A*

Commentaire de violent_ken le 26/11/2006 16:26:36

Re, çà devrait être bon comme çà (j'ai ajouté la différentiation entre Logique et Physique pour les secteurs).

Merci encore, @+

Commentaire de Galain le 26/11/2006 17:07:57

tout est Ok
Maintenant c'est 10/10
A+

Commentaire de violent_ken le 26/11/2006 17:17:01

Ok, çà roule ^^

Merci encore pour ton aide, @+

Commentaire de laverdanny le 28/11/2006 13:04:43

bonjour uax spécialistes file-system... ;-)

y a-t-il une manière accessible pour modifier la taille (voire le nombre) de partitions (notamment NTFS) ?

plus particulièrement pour Galain : y a-t-il manière de manipuler un fichier .ISO pour le faire devenir une image bootable ?

Merci d'avance

Commentaire de violent_ken le 28/11/2006 13:49:30

Salut, pour la première partie de la question, si jamais c'est possible de faire ce que tu demandes, çà se trouve par ici je pense :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/disk_management_control_codes.asp
et peut être plus particulièrement ici :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/ioctl_disk_set_partition_info_ex.asp

Pour la seconde partie de ta question, aucune idée, mais Galain te répondra certainement ;)

@+

Commentaire de Galain le 28/11/2006 21:13:22

Salut Laverdanny
Pour la deuxième question ce n'est pas de la manipulation de fichier ISO qu'il faut faire mais rajouter à ce même fichier ISO les informations de boot
Si je comprends bien tu aurais une image non bootable d'un CD et tu voudrais directement agir sur le fichier ISO pour permettre le boot si tu graves l'image ISO sur cd
Il faut rajouter sur l'ISO un descripteur de boot : un CD généralement contient 2 ou 3 descripteurs : un descripteur ISO et-ou un descripteur Microsoft-Joliet et un descripteur de fin.Un CD bootable contient en plus le descripteur de boot
Maintenant est-ce faisable ? Je l'ignore

Commentaire de violent_ken le 26/04/2007 18:00:42

(Note : cette source est entièrement contenue dans cette nouvelle source : http://www.vbfrance.com/codes/FILESYSTEMLIBRARY-TOUT-FSO-SUR-FICHIERS-DOSSIERS-DISQUES_42404.aspx

De plus, de nombreuses fonctions et d'autres classes (objets) sont présentes.)

@+

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Partitions Disque Important !!! [ par CHRI ] Bonjour,J'ai installé un disque de 10 Go sur une machine (Pentium 2).J'ai crée la partition primaire (C:) sur laquelle j'ai installé Win98.Ensuite lor DeviceIOControl et disque [ par Flachy Joe ] Comment utiliser l'API  DeviceIOControl pour lire des données sur un lecteur CD, je sais que c'est possible, mais dans les exemples que j'ai Parcours des fichiers d'un disque [ par lostrailler ] Bonjour à tous.Voilà, j'ai besoin de parcourir une partition d'un disque en entier. Il faut que je récupère sur tous les fichiers de la partition des obtenir le nimiro physique d'un disque dure en vb.net 2005 [ par maanaloun ] bonjour, j'ai fait un petit programe pour aider les enfans aveugles à metriser le clavier, mais je vais bien le protaiger. je cherche un example de c Récupérer l'index dun Disque dur [ par NHenry ] Bonjour, Après avoir chercher (je ne trouves visiblement pas les bons mots clés), je viens poser ma question ici. Elle est simple, je veux utiliser Nombre total de secteurs d'un disque physique [ par windob ] Bonjour,Je suis actuellement sur un projet pour lequel j'ai besoin de connaitre le nombre total de secteur du disque dur (physique et non logique).J'a espace disque [ par swan94 ] Salut à tous,je cherche à savoir comment trouver en VB2005 l'espace total et l'espace disponible sur le disque dur d'un autre poste présent sur le rés Partition batterie [ par gribouillex ] Bonjour,Je suis à la recherche d'un code qui permet de lire un fichier MIDI quelconque, d'afficher la partition batterie et la faire dérouler pendant [BAR]Cryptage de disque [ par lambene ] Quelles sont les étapes de cryptage d'un disque? Faire des recherches par mots clés dans des documents Word stockés sur disque via un formulaire VBA [ par amiineba ] Bonjour tout le monde, Je dois réaliser une application en VBA, avec une base de données ACCESS, qui doit me permettre de faire des recherches par mo


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,839 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales