Hardwarezugriff auf SD-Card
-
Hi all,
ich habe folgendes Problem. Ich möchte ein C/C++ Programm (unter Windows) schreiben welches auf eine SD-Card die in einem USB Card Reader steckt auf einzellne Sektoren zugreifen. d.h. Ich möchte an einen bestimmten Sektor einen ganz bestimmten wert schreiben. Es geht hier erstmal nur ums beschreiben.
Das Problem was ich jetzt sehe ist das Windows ja die Karte gemountet hat und ich keinen Zugriff drauf habe.Unter Linux kann ich das ohne weiteres mit hilfe des dd Befehls.
z.B. dd if=FileToUpload of=/dev/sda bs=512 count=1024genau das möchte unter windows aus meinen Programm machen.
Danke
Stefan
-
Warum geht es mit CreateFile, WriteFile nicht? Was bekommst Du für einen Fehler?
CreateFile(_T("e:\\"), ..., FILE_SHARE_WRITE|FILE_SHARE_READ|FILE_SHARE_DELETE)
-
Schon mal was mit DeviceIoControl versucht?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/devio/base/deviceiocontrol.asp
-
danke für die schnellen antworten.
über diese funktion habe ich die parameter der disk bekommen,hDevice = CreateFile("\\\\.\\f:", // drive to open 0,//FILE_ALL_ACCESS, // no access to the drive FILE_SHARE_READ | // share mode FILE_SHARE_WRITE, NULL, // default security attributes OPEN_EXISTING, // disposition 0, // file attributes NULL); // do not copy file attributes bResult = DeviceIoControl(hDevice, // device to be queried IOCTL_DISK_GET_DRIVE_GEOMETRY, // operation to perform NULL, 0, // no input buffer pdg, sizeof(*pdg), // output buffer &junk, // # bytes returned (LPOVERLAPPED) NULL); // synchronous I/Oallerdings habe ich noch nix drauf schreiben können. Ich habe auch keine parameter für DeviceIoControl gefunden die dies tun können.
DANKE
stefan
-
Hallo
Auf meiner Homepage http://members.inode.at/anton.zechner/az/index.html
findest du ein Tool namens DiskViewer samt Sourcen, das genau das macht.
-
Hi,
ich habe es jetzt auch schon geschafft blöcke auf die Karte zu schreiben. Allerdings Verhält sich das programm auf verschiedenen Rechnern unterschiedlich.
Wenn ich auf dem einen Rechner auf Sector 0 schreibe wird auch auf die Position 0 geschrieben. Bei meinem Laptop wird aber beim schreiben auf Sector 0 erst an eine Stelle weiter hinten geschrieben (ich glaube da wo das Filesystem los geht) geschrieben.Es scheind so zu sein das einmal das laufwerk physisch geöffnet wird und einmal nur das Dateisystem (mit dem gleichen Programm)
Danke
Stefan