Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi CreateFile W98 (https://www.delphipraxis.net/59949-createfile-w98.html)

TryIt 31. Dez 2005 10:17


CreateFile W98
 
Hallo Forum,

unten steht ein Programmfragment und die Wurzel meines Problems. Das Programm habe ich selber nicht geschrieben, aber es scheint anderweitig zu funktionieren. Der Wert"INVALID_HANDLE_VALUE" ist leider immer true. Mit s='COM1' funktioniert es.
Ich benutze Delphi5 auf einer W98-Plattform.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var hdevice: thandle;
     s:string;
begin
  s:='\\.\PD';
    hDevice:=CreateFile(pchar(s),
      GENERIC_READ or GENERIC_WRITE,
      FILE_SHARE_READ or FILE_SHARE_WRITE,
      nil,
      OPEN_EXISTING,
      FILE_FLAG_WRITE_THROUGH,
      0);
    if hDevice <> INVALID_HANDLE_VALUE then ShowMessage('ok') else ShowMessage('Sche...');
end;
Liegt es am W98SE? Wenn ja, gibt es eine andere Lösung?

Gruß
Bernhard

[edit=MrSpock]Delphi-Code Tags eingefügt. Mfg, MrSpock[/edit]

marabu 31. Dez 2005 11:08

Re: CreateFile W98
 
Herzlich willkommen in der Delphi-PRAXiS, Bernhard.

Versuche es mal mit \\.\PHYSICALDRIVE0 - und schau dir an wie ich deinen Code mit den Delphi-Tags aus dem Beitragseditor optisch aufwerte:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  hDevice: THandle;
  s: String;
begin
  s := '\\.\PHYSICALDRIVE0';

  hDevice := CreateFile(
    PChar(s),
    GENERIC_READ or GENERIC_WRITE,
    FILE_SHARE_READ or FILE_SHARE_WRITE,
    nil,
    OPEN_EXISTING,
    FILE_FLAG_WRITE_THROUGH,
    0
  );

  if hDevice = INVALID_HANDLE_VALUE
    then ShowMessage('no way')
    else ShowMessage('smile!');
end;
Keine Ahnung von Win98, aber du brauchst Adminrechte, damit es klappt.

Silvestergrüße vom marabu

TryIt 31. Dez 2005 11:36

Re: CreateFile W98
 
Hallo marabu,

vielen Dank für deine Willkommensgrüße und die rasche Antwort
Ich muß zugeben anfangs hat da mal PHYSICALDRIVE0' gestanden. :oops:

Scheint nur an den Adminrechten zu liegen.
Wenn ich mich als Admin ohne Paßword anmelde erhalte ich die gleiche Fehlermeldung.

Keine Ahnung wie ich unter W98 die Rechte erhalte.

Bernhard

Christian Seehase 31. Dez 2005 14:45

Re: CreateFile W98
 
Moin Bernhard,

Zitat:

Zitat von TryIt
Liegt es am W98SE?

Zitat:

Zitat von PSDK - CreateFile
Windows Me/98/95: You cannot open a directory, physical disk, or volume using CreateFile.

;-)

Lass' Dir doch mal nach dem fehlgeschlagenen CreateFile mit

Delphi-Quellcode:
ShowMessage(SysErrorMessage(GetLastError));
ausgeben, warum CreateFile INVALID_HANDLE_VALUE zurückgibt.


Zitat:

Zitat von TryIt
Keine Ahnung wie ich unter W98 die Rechte erhalte.

Unter 9x/ME hast Du praktisch immer Adminrechte.
Dort gibt es diese Berechtigungen von NT/2000/XP nicht.

TryIt 31. Dez 2005 16:05

Re: CreateFile W98
 
Hallo und danke Christian,
:wall:
es scheint, das es für das Problem keine Lösung außer ein Update auf W2000 oder so gibt.
Das Programm macht einen LOW-Level Zugriff auf eine Festplatte, welche aus meinen Festplatten-Videorecorder stammt.

Eigentlich wollte ich mich gestern an ein Linux Kernel-Modul wagen, bis ich das Programm gefunden habe. Meine Neigung den Zweitrechner noch aufzurüsten ist gering.

Das Programm ist zu finden auf der Web-Page
http://dcadiou.free.fr/DTH7000/download.htm
Der Programmteil stammt aus der unit disk

Gruß
Bernhard


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz