![]() |
CD Laufwerk öffen - Wo ist das Problem?
Hallo,
ich versuche mittels DeviceIOControl ein CD Laufwerk zu öfnnen und habe daher folgendes recherchiert und zusammengebastelt:
Delphi-Quellcode:
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.
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; 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. |
Re: CD Laufwerk öffen - Wo ist das Problem?
Ich weiß nciht, wo der Fehler liegt, aber verscuh doch mal das: (außer es MUSS mit dem DeviceIOControl gemacht werden)
![]() |
Re: CD Laufwerk öffen - Wo ist das Problem?
Muß die Variable tt nicht vom Typ TOverlapped sein?
Gruß Hawkeye //Edit: die Übergabe ist dann "@tt" |
Re: CD Laufwerk öffen - Wo ist das Problem?
Is' PhysicalDrive0 nicht eigentlich immer die HDD? Ich mein, die lässt sich ja nicht auswerfen, oder? :stupid:
@vlees: Bei deinem Link ist es aber nicht möglich das Laufwerk auszuwählen. Es ist definitiv über ASPI/SPTI machbar. |
Re: CD Laufwerk öffen - Wo ist das Problem?
bei mir zeigt der Compiler bei IOCTL_STORAGE_EJECT_MEDIA "Undefinierter Bezeichner" an (delphi-ver. steht links (D6 prof))
|
Re: CD Laufwerk öffen - Wo ist das Problem?
Jupp, gibt's ja auch erst seit NT 4.0
Zitat:
|
Re: CD Laufwerk öffen - Wo ist das Problem?
aber nt gibts länger als delphi 6....
|
Re: CD Laufwerk öffen - Wo ist das Problem?
@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. |
Re: CD Laufwerk öffen - Wo ist das Problem?
Zitat:
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.. |
Re: CD Laufwerk öffen - Wo ist das Problem?
Soo...
Delphi-Quellcode:
Das gibt schonmal ein gültiges Handle. Dein Code hat nämlich nichtmal ein gültiges Handle geliefert.
handle := CreateFile('\\.\I:',GENERIC_READ,FILE_SHARE_READ or FILE_SHARE_WRITE,NIL,OPEN_EXISTING,0,0);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:24 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