Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Блокировка привода CDRom Добавлено: 07.03.04 07:02  

Автор вопроса:  xShadow | ICQ: 52405490 

Все, что смог найти по сабжу это вот :

Исходный код  

//заблокировать
void CMFcDlg::OnBnClickedButton1()
{
HANDLE hDevice = CreateFile ("\\\\.\\E:",
GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
NULL,
NULL);
DWORD dwBytesReturned = 0;
PREVENT_MEDIA_REMOVAL pmr = {TRUE};
if(!DeviceIoControl (hDevice, IOCTL_STORAGE_MEDIA_REMOVAL, &pmr, sizeof(pmr), NULL, 0, &dwBytesReturned, NULL)) AfxMessageBox ("Door can\'t be locked");
CloseHandle (hDevice);
}

//разблокировать
void CMFcDlg::OnBnClickedButton2()
{
HANDLE hDevice = CreateFile ("\\\\.\\E:",
GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
NULL,
NULL);
DWORD dwBytesReturned = 0;
PREVENT_MEDIA_REMOVAL pmr = {FALSE};
if(!DeviceIoControl (hDevice, IOCTL_STORAGE_MEDIA_REMOVAL, &pmr, sizeof(pmr), NULL, 0, &dwBytesReturned, NULL)) AfxMessageBox ("Door can\'t be unlocked");
CloseHandle (hDevice);

}

... то есть, как бы все и хорошо, но не очень ясно с CreateFile? может у кого то есть уже готовое на VB

Ответить

  Ответы Всего ответов: 11  

Номер ответа: 1
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #1 Добавлено: 07.03.04 19:22

Может это изврат, но попытайся закрывать в таймере дверцу... :)))

Ответить

Номер ответа: 2
Автор ответа:
 NeForm@t



ICQ: 252999255 

Вопросов: 36
Ответов: 247
 Web-сайт: g--k.newmail.ru
 Профиль | | #2
Добавлено: 07.03.04 22:50

возможно и такое: удалить устройство через WMI

а ещё у как то в определённом случае explorer его блокирует, приходиться его вырубать чтобы открыть дверку(было всего 2 раза)

Ответить

Номер ответа: 3
Автор ответа:
 xShadow



ICQ: 52405490 

Вопросов: 7
Ответов: 11
 Профиль | | #3 Добавлено: 08.03.04 02:17

P.S.

C приводом в момент блокирования нужно работать. То есть блокировать нужно от Eject'a. Это умеет любая прога для прожига болванок.

Ответить

Номер ответа: 4
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #4
Добавлено: 08.03.04 02:39

А что неясного в CreateFile? Единственное - надо учесть, что в Си слэш заменяется на два и произвести обратное преобразование...

Ответить

Номер ответа: 5
Автор ответа:
 xShadow



ICQ: 52405490 

Вопросов: 7
Ответов: 11
 Профиль | | #5 Добавлено: 08.03.04 03:47

to Sharp

- да все с этим С не ясно ... начал, было, переделывать на нормальное ...

CreateFile ("\\\\.\\E:",
GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
NULL,
NULL)

- на VB это CreateFile("H:\", 1179785, 3, SA, 3, 0, 0)

(SA As SECURITY_ATTRIBUTES)

а дальше, ...  ... констант на DeviceIoControl не видать, да и CreateFile -1 возвращает ... в общем, как и говорил, "может у кого то есть уже готовое на VB "

Ответить

Номер ответа: 6
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #6
Добавлено: 08.03.04 14:12

> на VB это CreateFile("H:\", 1179785, 3, SA, 3, 0, 0)

Фигня. Во-первых, не "H:\", а именно "\\.\E:" - открывает устройство как файл, а не каталог, во-вторых, GENERIC_READ = &H80000000, а не 1179785 (и вообще лучше писать константы именами, тогда будешь уверен, что передается число, а не ссылка на него), в-третьих, числа желательно помечать символом типа, т.е. & в случае Long.

Ответить

Номер ответа: 7
Автор ответа:
 xShadow



ICQ: 52405490 

Вопросов: 7
Ответов: 11
 Профиль | | #7 Добавлено: 08.03.04 15:40

a DeviceIoControl с его IOCTL_STORAGE_MEDIA_REMOVAL

... в целом, та туева хуча параметров ... чего с ними делать

Ответить

Номер ответа: 8
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #8
Добавлено: 08.03.04 22:23

> чего с ними делать

Искать в заголовочных файлах VC их и подставлять... В Api Viewer нету :(

Ответить

Номер ответа: 9
Автор ответа:
 xShadow



ICQ: 52405490 

Вопросов: 7
Ответов: 11
 Профиль | | #9 Добавлено: 09.03.04 01:39

... очень, ... очень смешно ... но если побиться головой о стену, она, голова, умнее не станет ...

... можно еще на Micro$oft.com зайти, поискать там, пока не надоест ... я потому и люблю VB, что он помогает работать, а не мешает (как С ) ... ну да хватит флэйму ... будем искать альтернативу в принципе, а не в решении

Thanks

Ответить

Номер ответа: 10
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #10
Добавлено: 09.03.04 11:27

Напиши DLL на Си и не парься с переводом. И еще: я не уверен, но кажется, приложения Windows защищенного режима не могут вызывать DeviceIoControl...

Ответить

Номер ответа: 11
Автор ответа:
 xShadow



ICQ: 52405490 

Вопросов: 7
Ответов: 11
 Профиль | | #11 Добавлено: 09.03.04 16:50
... я на VBNet.ru, ... я не пишу на С ... и надеюсь, никогда не придется ...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам