Einzelnen Beitrag anzeigen

Kasoft

Registriert seit: 5. Mai 2004
Ort: Filderstadt
111 Beiträge
 
Delphi 7 Professional
 
#2

Re: Mit DeviceIoControl Laufwerk sperren und auslesen

  Alt 26. Mai 2004, 18:21
Die Google-Suche ergab das einige Leute auf das Problem gestoßen sind.
Gleichzeitig ergab sie auch dass man die Festplatte nur durch "dismounten"
von den Handles befreien kann. Natürlich habe ich nun versucht diese Möglich-
keit zu nutzen aber das führte zu keinem Erfolg.
Der Code den ich benutzt hab lautet:

Code:

   Result := DeviceIoControl(Handle, FSCTL_DISMOUNT_VOLUME, nil, 0, nil, 0,
      BytesReturned, nil);
Also eine DeviceIoControl Funktion. FSCTL_DISMOUNT_VOLUME ist eine Konstante.
In der winioctl.h wird sie so beschrieben:
Code:
#define FSCTL_DISMOUNT_VOLUME
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
Das müsste für FSCTL_DISMOUNT_VOLUME den Wert $90020 ergeben.
Wenn ich diese Funktion aber so ausführe meldet sie mir TRUE. ansich wäre es
ja dann perfekt. Aber leider stimmt das nicht. Wenn ich versuche nun die Platte
zu locken dann meldet er mir wieder false.
Danach hab ich ein Workaround mit Chkdsk gelesen. Chkdsk kontrolliert zuerst
ob irgendwelche Handles auf das Laufwerk zugreifen. Eigentlich sollte man dann
mit einem geeigneten Parameter die Handles ungültig machen können. Ich glaube
das war der Parameter /X
Aber auch diese Möglichkeit klappt nicht da mir chkdsk sofort meldet das Handles
auf das Laufwerk geöffnet sind und er nicht weiterarbeiten kann. Die Google suche
ergab hier rein gar nichts. Oder eher das es bei anderen klappt.

Ich hoffe das ich gerade nur nen Blackout habe und deswegen nicht vorwärts komme.

MfG
Kasoft
  Mit Zitat antworten Zitat