Ist es möglich unter Windows 8.1 mit VS C# einzelne Sektoren einer
SD-Card (2 GBytes) zu lesen?
Microsofts Beschreibung von System Calls/Low-Level I/O geht nicht tief
genug:
https://msdn.microsoft.com/en-us/library/40bbyw78.aspx
Mit Admin-Rechten kannst du die Dateien "\\.\physicaldriveX" (X für die
laufende Nummer des Gerätes, in der Datenträgerverwaltung) mit den
üblichen Funktionen öffnen, positionieren, lesen.
Ingo W. schrieb:> Mit Admin-Rechten kannst du die Dateien "\\.\physicaldriveX" (X für die> laufende Nummer des Gerätes, in der Datenträgerverwaltung) mit den> üblichen Funktionen öffnen, positionieren, lesen.
Was bedeutet übliche Funktionen und wo finde ich sie? Kann ich mit ihnen
auch einzelne Sektoren lesen?
Bernd schrieb:> Was bedeutet übliche Funktionen und wo finde ich sie? Kann ich mit ihnen> auch einzelne Sektoren lesen?
Ich kenne c# nicht, in C wären dies "open", "seek" "read" und "close".
Sicher gibt es in c# hierfür Entsprechungen.
Arc N. schrieb:> Da es nur um Sektoren einer SD-Karte geht, reichen die höheren> Funktionen, wie schon geschrieben wurde, aus:> https://stackoverflow.com/questions/38190/how-do-i-read-a-disk-directly-with-net
Das Programm von Stackoverflow habe ich versucht zu compilieren (siehe
Anhang).
Im ersten Teil (using ..., namespace ReadFromDevice) sind keine Fehler.
Im zweiten Teil (Main) sind 10.
1
Fehler 1 Klasse, Delegat, Enumeration, Schnittstelle oder Struktur erwartet. Program.cs 194 8 ConsoleApplication1
Bernd schrieb:> Kann dieses Programm überhaupt unter C# compiliert werden?
Ja, dass einzige was angemeckert wird, ist die nicht definierte
Konstante MB. Ansonsten fehlt da nur das nötige Brimborium drumrum:
Das Programm wird ohne Fehler übersetzt. Allerdings gibt es ein Problem
mit dem Handle (siehe Bild).
Das Laufwerk und die Sektorlänge habe ich mir mit WMIC heraussuchen
lassen (\\.\PHYSICALDRIVE6 bzw. 512 Bytes).
Wie kann das Problem behoben werden?
------------------------------------------------------------
Vor der Ausführung der Zeile hat handleValue den Wert "null" danach den
Wert
{Microsoft.Win32.SafeHandles.SafeFileHandle}