Accueil > Forum > > > > Pb de lecture lors d'un accès physique au disque dur
Pb de lecture lors d'un accès physique au disque dur
vendredi 17 mars 2006 à 15:07:32 |
Pb de lecture lors d'un accès physique au disque dur

PavICF
|
Bonjour,
Voici mon problème, assez bizare je dois dire:
Lorsque j'ouvre le disque dur avec CreateFile afin d'obtenir un handle pour la lecture, et que je lis le premier secteur du disque (MBR), le comportement de l'API windows est très différent selon le cas:
J'obtiens le handle avec la commande: hdisk = CreateFile (drive, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, NULL, NULL);
Si drive = "\\\\.\\C:", tout se passe bien, ReadFile retourne bien les 512 premiers octets du secteur
Par contre, si drive = "\\\\.\\PHYSICALDRIVE0", ReadFile commence à lire à partir du 85ème octet du secteur !
Franchement, je n'y comprends rien là, est-ce que quelqu'un a une idée sur la raison d'un tel fonctionnement, ou une solution à proposer pour le cas où drive = = "\\\\.\\PHYSICALDRIVE0" ?
Je vous remercie d'avance pour vos réponses et vous souhaite à tous une bonne journée!
|
|
vendredi 17 mars 2006 à 15:19:11 |
Re : Pb de lecture lors d'un accès physique au disque dur

BruNews
|
La syntaxe \\.\PHYSICALDRIVExxx est pour avoir un handle à passer à DeviceIoControl(). ciao... [ Lien ]BruNews, MVP VC++
|
|
vendredi 17 mars 2006 à 16:59:51 |
Re : Pb de lecture lors d'un accès physique au disque dur

PavICF
|
Merci beaucoup pour ta réponse, ça explique pas mal de choses.
Mais ça me paraît tout de même bizare car dans la documentation msdn il est écrit qu'il faut tout de même utiliser CreateFile et ReadFile dans les deux cas, alors est-ce que DeviceIOControl servirait à indiquer à partir de quel offset du secteur la lecture devrait débuter, et ayant oublié d'appeler cette fonction, j'obitendrais une lecture aléatoire?
|
|
vendredi 17 mars 2006 à 17:24:35 |
Re : Pb de lecture lors d'un accès physique au disque dur

BruNews
|
Tu peux t'en servir avec CreateFile mais tu devrais utiliser DeviceIoControl en ce cas, va voir la doc de cette fonction sur MSDN pour avoir les codes de lecture. Gaffe que c'est plus délicat qu'avec ReadFile, voir exemple dans mes sources au besoin. ciao... [ Lien ]BruNews, MVP VC++
|
|
vendredi 17 mars 2006 à 18:19:42 |
Re : Pb de lecture lors d'un accès physique au disque dur

PavICF
|
Je viens d'éplucher (à nouveau) la doc de MSDN sur DeviceIOControl, et j'ai trouvé une tonne de fonctions pour la gestion des disques, comme obtenir les infos sur une partition, le MBR...... mais je ne voie toujours pas quel flag il faut utiliser pour lire directement le numéro de secteur qu'on veut. J'ai vu qu'il y avait des flags pour envoyer des données asynchrones sur un périphérique, mais est-ce que ça s'applique pour le disque dur?
J'ai aussi regardé les sources (impressionnant d'ailleurs) que tu as posté sur le site, et je n'ai pas non plus trouvé de lecture directe d'un secteur du disque avec DeviceIOControl.
Peut-être ai-je mal compris le principe, de cette API.
Voulais-tu parler d'un appel à cette fonction pour obtenir la possibilité d'utiliser le driver qui gère le disque dur, comme on le ferait dans le cas de versions ultérieures à Win2k?
Encore une question, quelle technique me conseillerais-tu d'utiliser pour que le logiciel, une fois fini, puisse être utilisé avec tous types de comptes, pas seulement avec un compte administrateur? (parce qu'il me semble qu'avec CreateFile, l'accès direct au disque dur n'est autorisé que pour un compte administrateur)
|
|
vendredi 17 mars 2006 à 18:34:21 |
Re : Pb de lecture lors d'un accès physique au disque dur

BruNews
|
Dans tous les cas l'accès direct aux disques est à réserver au compte admin. DeviceIoControl provoque un appel direct au driver. Les versions winbebe (avant win2K) n'ont plus à être prises en charge. Regarde bien la doc et fais des tests, tant que tu n'envoies pas de commane d'écriture tu ne risques rien. ciao... [ Lien ]BruNews, MVP VC++
|
|
mardi 21 mars 2006 à 23:04:11 |
Re : Pb de lecture lors d'un accès physique au disque dur

PavICF
|
Merci pour ces réponses,
Je me suis aussi pas mal renseigné sur le net à ce sujet (ce qui explique ma longue absence du sujet), et voici ce qui en résulte:
- apparament, lorsqu'on ouvre le handle avec CreateFile ("////.//PHYSICALDISK0".......), on ne peut obtenir que des informations sur la structure du disque ou ses fonctionnalités avec DeviceIOControl
- D'après mes tests, ouvrir le disque avec le paramètre "////.//C:" ne permet pas de lire certains secteurs du disque comme par exemple la MFT sur les disques en NTFS
- Pour avoir un accès complet au disque, il faut soit passer par une dll 16bits qui permet encore les appels directs aux routines du BIOS, soit écrire un driver virtuel que l'on appel pour y accéder.
dites moi si je me trompe.....
à bientôt et bonne soirée!
|
|
mardi 21 mars 2006 à 23:12:50 |
Re : Pb de lecture lors d'un accès physique au disque dur

PavICF
|
Bon, finalement la lecture de la MFT marche avec "////.//C:", autant pour moi...... 
|
|
Cette discussion est classée dans : lecture, pb, dur, disque, drive
Répondre à ce message
Sujets en rapport avec ce message
disque dur , plateau , bras , tete de lecture. [ par Bonjour_ca_va_? ]
Bonjour a tous.Je voudrai savoir si il est possible d'accedé a la tete de lecture (et le reste du disque dur).Exemple faire bougé le bras,passé la tet
pb avec lecture sur port COM bloquant !! [ par jujunio ]
Bonjour, J'ai réalisé une appli en MFC et lorsque je clic sur un bouton, il y a une lecture sur un des ports com du PC qui est lancée. Le PB c'est que
Mettre en veille un Disque Dur [ par Bat ]
Salut, sur windows, est ce que quelqu un c'est comment mettre en veille 1 disque dur (pas le pc ou tout mes dd. Juste un de mes disque dur) ?Merci
charger une image du disque dur et avoir l'apercu dans la boite de dialogue [ par djmix73 ]
bonjour a tousje fais une gestion de films, et je voudrai charger une image du disque dur et avoir l'apercu dans la boite de dialogue.
charger une image du disque dur et avoir l'apercu dans la boite de dialogue avec visual c++6 [ par djmix73 ]
Bonjour a tous,Je voudrai charger une image du disque dur et avoir l'apercu dans la boite de dialogue avec visual c++6. J'ai fait toutes les sources,
pb de lecture sock [ par ExTAS ]
bah jarriv a me connecter etc etcjarriv a recevoir des donnée avec{ char buffer[64]; int rec; do { rec = recv(sock,buffer,64*sizeof
pb de lecture de fichier avec une DLL [ par loic81 ]
J'ai fait un programme en C sous vc++6 qui lit un dans un fichier (en trottre) en utilsant la méthode des streams (fonction fread...).Lorsque je le c
Formatage [ par sniperfou ]
Salut, Je souhaiterais savoir comment formater un disque dur, car je suis entrain de crée un gestionnaire de disque dur, et je ne trouve pas cette fon
Comment faire pour rechercher un fichier dans tout le disque dur ? [ par appstmd ]
Salut !J'ai besoin de savoir comment on peut scanner le disque dur à la recherche d'un fichier déterminé. Quelqu'un connait-il une astuce ou un algori
lister les fichiers du disque dur en c et non en c++ [ par sebos2013 ]
Quelqu'un pourrait il m'aider.J'essaie de creer un prog en c qui permet de listertout les fichiers du disque dur et de stoquer le nom et le chemin de
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|