[VB2010] Auf einzelne Sekoren eines USB Sticks zugreifen

Gast #4639875
Lesenswert?

Hallo Leute,

Der Fairness halber möchte ich erwähnen, das ich schon in einem VB Forum 
um Hilfe gepostet habe.
Mein Problem:
Ich möchte bei einem USB Stick auf die einzelnen Sektoren 
zugreifen.(Auch MBR!!!)
Sinn des ganzen ist, das von einem Embedded PC auf den Stick ohne 
Dateisystem geschrieben wird.
Arbeite jetzt immer mit einem Diskeditor, den ich fernsteuere.
Daher: 
(http://www.vbarchiv.net/forum/id10_i75225t75225_exe-datei-an-projekt-anhaengen.html)
Das möchte ich aber nun selbst übernehmen, weil ich schneller und 
flexibler erbeiten kann.

Seht ihr da Möglichkeiten, um auf LowLevel darauf lesend UND schreiben 
zuzugreifen?

Habe eine Möglichkeit für VB6 gefunden.Dies funktioniert.
Leider lässt sich der Code nicht nach .net portieren :-(

mfG
Seek1
Gast #4639886
Lesenswert?

Seek1 schrieb:

Im finsteren Mittelalter der PC-Ära, musste man für HDD-Sektorenzugriffe 
direkt auf die ATA-Register (IO-Ports =x2??) zugreifen. Unter Windows 
geht das nicht mehr ohne einen Device-Treiber dafür zu schreiben.

Ich würde also mal bei den Device API's schauen ob es da was passendes 
gibt. Ich bezweifle dass man mit VisualBasic so tief auf die Hardware 
zugreifen kann. Zumal hier noch USB als weiter SW-Schicht dazwischen 
liegt.
Gast #4639888
Lesenswert?

Windows selber abstrahiert die Sektoren zu einem Filesystem, was du ja 
nicht willst. Deswegen brauchst du einen Treiber. Ob du einen fertigen 
benutzen kannst oder selber einen schreiben musst weiß ich leider nicht.
#4639896
Lesenswert?

Mit CreateFile() direkt die Harddisk öffnen und dann mit ReadFile() die 
Sektoren einlesen. Siehe MSDN
1
Another example of using the Win32 device namespace is using the CreateFile function with "\\.\PhysicalDiskX" (where X is a valid integer value) or "\\.\CdRomX". This allows you to access those devices directly, bypassing the file system. This works because these device names are created by the system as these devices are enumerated, and some drivers will also create other aliases in the system. For example, the device driver that implements the name "C:\" has its own namespace that also happens to be the file system.

[1] 
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247%28v=vs.85%29.aspx
[2] 
https://msdn.microsoft.com/en-us/library/windows/desktop/aa363858%28v=vs.85%29.aspx
[3] 
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365467%28v=vs.85%29.aspx
#4642023
Lesenswert?

Sebastian Hepp schrieb:
> Windows selber abstrahiert die Sektoren zu einem Filesystem, was du ja
> nicht willst.

Soweit richtig.

Sebastian Hepp schrieb:
> Deswegen brauchst du einen Treiber.

Falsch. Er kann - mit Admin Privilegien - einfach das Physical Device 
aufmachen und dann Sektoren lesen und schreiben.

Allerdings würde ich auch im embedded Device immer ein FAT Dateisystem 
benutzen. Das ist fast immer einfacher als selber was zu frickeln, denn 
es gibt reichlich open source Code.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren