AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

writefile-Problem

Offene Frage von "alpenrose"
Ein Thema von alpenrose · begonnen am 31. Mai 2017 · letzter Beitrag vom 1. Jun 2017
Antwort Antwort
alpenrose

Registriert seit: 31. Mai 2017
9 Beiträge
 
#1

writefile-Problem

  Alt 31. Mai 2017, 11:14
var bufferp:array[0..511] of byte;
.
.
.
c:='\\.\PhysicalDrive1'+chr(0);
a:=createfile(pchar(c),GENERIC_READ+GENERIC_WRITE, FILE_SHARE_READ+FILE_SHARE_WRITE,nil,OPEN_EXISTING ,0,0);
for i := 0 to 511 do bufferp:=0;
b:=setfilepointer(a,bootsectorpos,nil,FILE_BEGIN); //Bootsektor einer FAT32-Partition auf einer externen USB-HDD
bp:=512;
x:=writefile(a,bufferp[0],bp,b,nil); //Bootsektor schreiben - das funktioniert

b:=setfilepointer(a,bootsectorpos+6*512,nil,FILE_B EGIN); //Backup-Bootsektor (nur 6 Sektoren weiter) von obiger Partition
bp:=512;
x:=writefile(a,bufferp[0],bp,b,nil); //Backup-Bootsektor schreiben - das funktioniert nicht (access denied)
closehandle(a);
.
.
.

Das obige Codefragment soll den Bootsektor und den Backup-Bootsektor einer FAT32-Partition auf einer externen USB-HDD löschen.
Das Löschen des Bootsektors funktioniert, das Löschen des Backup-Bootsektors hingegen nicht: Zugriff verweigert!
Was könnte der Grund dafür sein und wie kann man das Problem lösen?
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: writefile-Problem

  Alt 31. Mai 2017, 23:35
Was liefert den SetFilePointer zurück?
Und was ist der Inhalt von bootsectorpos?

b:=setfilepointer(a,bootsectorpos+6*512,nil,FILE_B EGIN); //Backup-Bootsektor (nur 6 Sektoren weiter) von obiger Partition Und hast Du einmal versucht, die Größe der Datei zu bestimmen?
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

Gruß
K-H

P.S.
"a" und "b" sind als Variablennamen nicht so der Renner
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
EmWieMichael

Registriert seit: 28. Mär 2012
103 Beiträge
 
#4

AW: writefile-Problem

  Alt 1. Jun 2017, 10:53
Code:
for i := 0 to 511 do bufferp:=0;
Das würde mein Compiler verweigern.
  Mit Zitat antworten Zitat
alpenrose

Registriert seit: 31. Mai 2017
9 Beiträge
 
#5

AW: writefile-Problem

  Alt 1. Jun 2017, 11:20
Hallo p80286!

SetFilePointer liefert den Wert 1694410752 zurück (wies sein soll).
Der Inhalt von bootsectorpos ist: 1694407680
Die Größe welcher Datei meinst Du, da ist ja keine im Spiel?

Hallo EmWieMichael!

for i := 0 to 511 do bufferp:=0; ist natürlich falsch!!!

War ein Abschreibfehler (ist in meinem Quelltext richtig), muss richtig heißen:

for i := 0 to 511 do bufferp[i]:=0;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz