Accès Direct au disque dans windows (C#)
Je veux être capable de lire et écrire des données directement à partir d'un disque (c'est à dire à un secteur /cluster de niveau), mais je n'ai pas encore trouver un outil adapté pour faire cela sous windows.
J'ai été à essayer de comprendre comment écrire mon propre en C#, mais la documentation que j'ai trouvé est rare et ne traite qu'avec C++ Api.
Quel est le meilleur moyen de lecture /écriture directement à partir d'un disque en C#? (ou quelqu'un peut-il me recommander un outil qui me permet de lire /écrire directement à partir d'un lecteur?)
OriginalL'auteur Justin | 2009-09-09
Vous devez vous connecter pour publier un commentaire.
pinvoke.net a une collection de code managé des wrappers pour la quasi-totalité de l'API Win32, y compris ceux qui peuvent parler au service Gestionnaire de Disque et effectuer faible niveau kernel/IO.
CreateFile
dans kernel32. Il est géré gestionnaire de flux exemple ici: Comment puis-je lire un disque directement avec .NET.OriginalL'auteur Jason
Honnêtement, vous avez probablement besoin de regarder Appel De Plate-Forme si vous voulez écrire ce code en C#. Il vous permet d'interagir avec non géré plate-forme Api, que vous avez mentionné est l'essentiel de l'information que vous avez trouvé à ce jour 🙂
OriginalL'auteur Joel Martinez
Cette question revient sur une recherche de termes liés à la périphérique de bloc écrire .NET, donc je voudrais l'embellir l'origine des réponses avec des liens directs.
D'abord, vous serez à l'aide d'un PInvoke à CreateFile pour obtenir un descripteur de fichier.
PInvoke méthodes sont utilisées pour importer CreateFile dans le .NET de l'environnement. MSDN avez un exemple en vertu de leur discussion de la SafeFileHandle. Si vous souhaitez créer de type c# pour les paramètres et les codes de retour de CreateFile, il y a quelques exemples sur PInvoke
Cependant, vous devez décider si vous voulez écrire à la physique de l'appareil ou d'un volume. Les Volumes correspondent à des partitions sur l'appareil. E. g. "\.\PhysicalDrive0" est le dispositif physique, alors que le "\.\C:" le volume.
Pour les détails de la la disponible Win32 dispositifs, l'utilisation d'une version C# de QueryDosDevice de Fond sur ces Win32 appareils, leur nom la conversion et de la relation à l'O/S objets peuvent être trouvés dans "Windows Internals" par Mark Russinovich.
OriginalL'auteur Donal Lafferty