Запереть CD-ROM
Кто нить знает как можно запереть CD-ROM програмно, так что бы он по нажатию кнопочки(на самом сидюке) не открывался.
Это очнь интересный вопрос... А также Как открыть, закрыть CD-Rom.Как Узнать как называется CD-Rom или его букву?
Кто знает что-либо о функциях CD-Rom прошу помочь.
Заранее благодарю(:-)).
Это очнь интересный вопрос... А также Как открыть, закрыть CD-Rom.Как Узнать как называется CD-Rom или его букву?
Кто знает что-либо о функциях CD-Rom прошу помочь.
Заранее благодарю(:-)).
По по поводу определения CD-ROMа, вот код на VB:
'В MSDN описана функция.
BitMask = GetLogicalDrives()
ch = "A"
For i = 0 To 15
bm = BitMask Mod 2
BitMask = BitMask \ 2
If bm = 1 Then
GDT = GetDriveType(ch & ":\")
End If
ch = Chr$(66 + i)
Next
ch - символьное обозначение устройства.
Где GDT тип устройства:
DRIVE_UNKNOWN The drive type cannot be determined.
DRIVE_NO_ROOT_DIR The root path is invalid. For example, no volume is mounted at the path.
DRIVE_REMOVABLE The disk can be removed from the drive.
DRIVE_FIXED The disk cannot be removed from the drive.
DRIVE_REMOTE The drive is a remote (network) drive.
DRIVE_CDROM The drive is a CD-ROM drive.
DRIVE_RAMDISK The drive is a RAM disk.
Удачного кодинга!
Кто нить знает как можно запереть CD-ROM програмно, так что бы он по нажатию кнопочки(на самом сидюке) не открывался.
Сначала расскажу, как открыть CD-ROM:
HANDLE fhnd;
DWORD BitMask,bm,i,gdt,res, dwBytesReturned;
char ch='A';
LPTSTR szVolumeFormat = TEXT("\\\\.\\%c:");
LPTSTR szRootFormat = TEXT("%c:\\");
TCHAR szVolumeName[8];
TCHAR szRootName[5];
//Получаем битовую маску устройств.
BitMask=GetLogicalDrives();
//В цикле, проверяем наличие установленных устройств
for(i=0;i<=31;i++){
bm=(BitMask>>i)&1;
if(bm) {
wsprintf(szRootName, szRootFormat, ch);
//Если 1, то проверяем тип устройства.
gdt=GetDriveType(szRootName);
wsprintf(szVolumeName, szVolumeFormat, ch);
if(gdt==5) {
//если это CD, то открывает устройство.
fhnd = CreateFile(szVolumeName, GENERIC_READ, FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
//Передаём комманду открыть (так же можно передать комманду закрыть)
DeviceIoControl(fhnd, IOCTL_STORAGE_EJECT_MEDIA, NULL, 0, NULL, 0, &dwBytesReturned, NULL);
//Закрываем дескриптор устройства устройства.
CloseHandle(fhnd);
}
}
//Увеличиваем переменную для получения буквы устройства.
ch++;
}