안녕 하세요?
BacTeria 박종밍 입니다.
아래팁은 MCI 명령을 쓰지 않고 CD-ROM을 꺼집어(?) 낼수 있는 방법입니다.
MO도 해당 되고요.
아래에 드라이브명만 바꾸어 주시면 꺼낼수 있는 모든 매체는 다 꺼내어 줍니다. (Soft버튼 아시죠??)
사실 제 MO 디스켓 꺼낼때 드라이브에 있는 버튼 누르기 귀찮아서요... ㅋㅋ
그럼 오늘 하루도 수고하세여~
const
FILE_DEVICE_MASS_STORAGE = $2D;
METHOD_BUFFERED = 0;
FILE_ANY_ACCESS = 0;
FILE_READ_ACCESS = 1;
FILE_WRITE_ACCESS = 2;
IOCTL_STORAGE_EJECT_MEDIA = (FILE_DEVICE_MASS_STORAGE shl 16) OR
(FILE_READ_ACCESS shl 14) OR
($202 shl 2) OR
(METHOD_BUFFERED);
IOCTL_STORAGE_LOAD_MEDIA = (FILE_DEVICE_MASS_STORAGE shl 16) OR
(FILE_READ_ACCESS shl 14) OR
($203 shl 2) OR
(METHOD_BUFFERED);
var
cd: THandle;
ret: DWORD;
begin
// Note: Stefan opened CD-ROM with GENERIC_READ OR GENERIC_WRITE.
// That should be correct according to MS documentation but was not working for me.
// This (just GENERIC_READ) seems to be working on all computers.
cd := CreateFile(PChar('\\.\e:'), GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);
if CD <> INVALID_HANDLE_VALUE then begin
// eject
if not DeviceIoControl(cd, IOCTL_STORAGE_EJECT_MEDIA, nil, 0, nil, 0, ret, nil) then { report error };
// load
(* if not DeviceIoControl(cd, IOCTL_STORAGE_LOAD_MEDIA, nil, 0, nil, 0, ret, nil) then { report error }; *)
CloseHandle(cd);
end;
end;
|