AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi CD Laufwerk öffen - Wo ist das Problem?
Thema durchsuchen
Ansicht
Themen-Optionen

CD Laufwerk öffen - Wo ist das Problem?

Ein Thema von skunker · begonnen am 4. Jun 2006 · letzter Beitrag vom 4. Jun 2006
Antwort Antwort
Seite 1 von 2  1 2      
skunker
(Gast)

n/a Beiträge
 
#1

CD Laufwerk öffen - Wo ist das Problem?

  Alt 4. Jun 2006, 17:41
Hallo,
ich versuche mittels DeviceIOControl ein CD Laufwerk zu öfnnen und habe daher folgendes recherchiert und zusammengebastelt:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
handle: THandle;
test: PSecurityAttributes;
back: Boolean;
return: Cardinal;
tt: POverlapped;
begin
handle := CreateFile('\\\\.\\PhysicalDrive0',GENERIC_READ,FILE_SHARE_READ or FILE_SHARE_WRITE,NIL,OPEN_EXISTING,0,0);

back := DeviceIOControl(handle,IOCTL_STORAGE_EJECT_MEDIA,NIL,0,NIL,0,return,tt);

end;
So ausführen ist ja kein Problem nur bekomm ich eine Zugriffsverletzung in der kernel32.dll und nichts passiert, also das LW öffnet sich nicht.

Der Fehler liegt bei DeviceIOControl, den nach dem debugging weiß ich das CreateFile keinen Fehler aufruft.

Doch wo liegt der Fehler ?


Danke schonmal im Voraus.
  Mit Zitat antworten Zitat
Benutzerbild von vlees91
vlees91

Registriert seit: 19. Apr 2004
843 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: CD Laufwerk öffen - Wo ist das Problem?

  Alt 4. Jun 2006, 17:44
Ich weiß nciht, wo der Fehler liegt, aber verscuh doch mal das: (außer es MUSS mit dem DeviceIOControl gemacht werden)
http://dsdt.info/tipps/?id=138
vlees91
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#3

Re: CD Laufwerk öffen - Wo ist das Problem?

  Alt 4. Jun 2006, 17:48
Muß die Variable tt nicht vom Typ TOverlapped sein?

Gruß Hawkeye

//Edit: die Übergabe ist dann "@tt"
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#4

Re: CD Laufwerk öffen - Wo ist das Problem?

  Alt 4. Jun 2006, 17:49
Is' PhysicalDrive0 nicht eigentlich immer die HDD? Ich mein, die lässt sich ja nicht auswerfen, oder?

@vlees: Bei deinem Link ist es aber nicht möglich das Laufwerk auszuwählen. Es ist definitiv über ASPI/SPTI machbar.
  Mit Zitat antworten Zitat
Benutzerbild von vlees91
vlees91

Registriert seit: 19. Apr 2004
843 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: CD Laufwerk öffen - Wo ist das Problem?

  Alt 4. Jun 2006, 17:51
bei mir zeigt der Compiler bei IOCTL_STORAGE_EJECT_MEDIA "Undefinierter Bezeichner" an (delphi-ver. steht links (D6 prof))
vlees91
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#6

Re: CD Laufwerk öffen - Wo ist das Problem?

  Alt 4. Jun 2006, 17:55
Jupp, gibt's ja auch erst seit NT 4.0

Zitat:
Included in Windows XP, Windows 2000 Professional, and Windows NT Workstation 4.0.
IOCTL_STORAGE_EJECT_MEDIA = $002D4808;
  Mit Zitat antworten Zitat
Benutzerbild von vlees91
vlees91

Registriert seit: 19. Apr 2004
843 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: CD Laufwerk öffen - Wo ist das Problem?

  Alt 4. Jun 2006, 17:57
aber nt gibts länger als delphi 6....
vlees91
  Mit Zitat antworten Zitat
skunker
(Gast)

n/a Beiträge
 
#8

Re: CD Laufwerk öffen - Wo ist das Problem?

  Alt 4. Jun 2006, 17:59
@vlees91
ne es muss schon ohne MCI Commands gehen.
IOCTL_STORAGE_EJECT_MEDIA ist eine Konstante, auf der JEDI Page kannst du dir die winapi Headers ziehen und die JwaWinIoctl einbinden.


Ich habe jetzt anstatt POverlapped mal TOverlapped probiert bzw. beides und beim Command bei tt zu @tt geändert.

Jetzt kommt keine Zugrifssverletzung mehr, garnichts. Nur das Laufwerk öffnet sich immernoch nicht.

Ich hab schon \\\\.\\PhysicalDrive0-3 probiert und \\\\.\\D: probiert oder nur D: nichts funzt.
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#9

Re: CD Laufwerk öffen - Wo ist das Problem?

  Alt 4. Jun 2006, 18:03
Zitat von vlees91:
aber nt gibts länger als delphi 6....


Hmm.. Dann hat Borland zu diesem Zeitpunkt die Konstanten für NT wohl nicht eingebaut... Interessant... D2005 kennt die Konstante jedenfalls..

//Edit: Äh... D2005 kennt die doch nicht... Dann hat Borland wohl nicht alle Konstanten aus'm PSDK übernommen..
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#10

Re: CD Laufwerk öffen - Wo ist das Problem?

  Alt 4. Jun 2006, 18:11
Soo...

handle := CreateFile('\\.\I:',GENERIC_READ,FILE_SHARE_READ or FILE_SHARE_WRITE,NIL,OPEN_EXISTING,0,0); Das gibt schonmal ein gültiges Handle. Dein Code hat nämlich nichtmal ein gültiges Handle geliefert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 14:55 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