Блокировка доступа к флоппи-дисководу

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Fil
Обычный пользователь
Обычный пользователь
 
Сообщения: 61
Зарегистрирован: 23.01.2006 (Пн) 14:17

Блокировка доступа к флоппи-дисководу

Сообщение Fil » 24.01.2006 (Вт) 17:20

Интересный факт - если зажечь лампочку в флоппике, то чтение, как и запись невозможны. Однако, как это сделать в Виндовсе ИксПи? Можно, если кто знает - и через Ассемблер на аппаратном уровне.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 24.01.2006 (Вт) 17:23

Топику - огромный LOL.



Ну а автору советую - да вообще отключить флоп. ПО нынешним временамм кому он нафиг нужен то?

Fil
Обычный пользователь
Обычный пользователь
 
Сообщения: 61
Зарегистрирован: 23.01.2006 (Пн) 14:17

Сообщение Fil » 24.01.2006 (Вт) 17:33

Конечно он мне нафиг не нужен! Это незыблемая истина! Проехали... :?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.01.2006 (Вт) 17:34

Windows XP и аппаратный уровень? Пиши драйвер.
Lasciate ogni speranza, voi ch'entrate.

Fil
Обычный пользователь
Обычный пользователь
 
Сообщения: 61
Зарегистрирован: 23.01.2006 (Пн) 14:17

Сообщение Fil » 24.01.2006 (Вт) 17:36

Тогда параллельный вопрос: как заблочить сидюк или дивидюк? Надеюсь, они ещё не устарели :)

Fil
Обычный пользователь
Обычный пользователь
 
Сообщения: 61
Зарегистрирован: 23.01.2006 (Пн) 14:17

Сообщение Fil » 24.01.2006 (Вт) 17:38

alibek
Драйвер не подходит и не обязательно так кидаться в крайности, что если аппаратный уровень - так сразу - драйвер. Можно же просто встроить код Ассемблера.

neic
Жираф
Жираф
 
Сообщения: 492
Зарегистрирован: 13.02.2005 (Вс) 23:44
Откуда: Сланцы

Сообщение neic » 24.01.2006 (Вт) 17:43

Fil писал(а):Тогда параллельный вопрос: как заблочить сидюк или дивидюк? Надеюсь, они ещё не устарели :)

4 выхода:
1. Просто отключить CD/DVD
2. Постояно его(их) закрывать (программно)
3. Выключить питание
4. Тоскать с собой

Fil
Обычный пользователь
Обычный пользователь
 
Сообщения: 61
Зарегистрирован: 23.01.2006 (Пн) 14:17

Сообщение Fil » 24.01.2006 (Вт) 17:46

neic
Так то оно так, но это мне не подходит. Спасибо за выходы :)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 24.01.2006 (Вт) 22:35

Код: Выделить всё

Declare Function DeviceIoControl Lib "kernel32" (ByVal hDevice As Long, ByVal dwIoControlCode As Long, lpInBuffer As Any, ByVal nInBufferSize As Long, lpOutBuffer As Any, ByVal nOutBufferSize As Long, lpBytesReturned As Long, lpOverlapped As Any) As Long
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 25.01.2006 (Ср) 13:46

Тогда, заодно блокируй еще и USB, IEEE1394 и прочие интрефейсы, к которым можно подрубить bootable media :)

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 25.01.2006 (Ср) 14:41

Ну вот, человек в поисках знаний пришел на форум, дзенствующий, можно сказать. А вы... Не стыдно, Rey? :wink:
А я все практикую лечение травами...

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 25.01.2006 (Ср) 15:35

Fil писал(а):Тогда параллельный вопрос: как заблочить сидюк или дивидюк? Надеюсь, они ещё не устарели :)


Тогда уж и прочие устройства не забудь, а то поразвелось у людей всяких флэшек...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 25.01.2006 (Ср) 15:56

Зачаем все устройства, лучше сразу блокануть процессор :D
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Блокировка доступа к флоппи-дисководу

Сообщение ANDLL » 25.01.2006 (Ср) 16:24

Fil писал(а):Интересный факт - если зажечь лампочку в флоппике, то чтение, как и запись невозможны. Однако, как это сделать в Виндовсе ИксПи? Можно, если кто знает - и через Ассемблер на аппаратном уровне.

Открываещ девайс A:\ с правами SHARE_EXCLUSIVE
RayShade писал(а):Топику - огромный LOL.

RayShade, всегда замечал за вами способность видеть смешное в самых неожиданных местах. А что тут смешного?
Fil писал(а):alibek
Драйвер не подходит и не обязательно так кидаться в крайности, что если аппаратный уровень - так сразу - драйвер. Можно же просто встроить код Ассемблера.

Если аппаратный уровень - то ТОЛЬКО драйвер. Или ЧЕРЕЗ драйвер...
Хакер писал(а):
Код: Выделить всё
Declare Function DeviceIoControl Lib "kernel32" (ByVal hDevice As Long, ByVal dwIoControlCode As Long, lpInBuffer As Any, ByVal nInBufferSize As Long, lpOutBuffer As Any, ByVal nOutBufferSize As Long, lpBytesReturned As Long, lpOverlapped As Any) As Long

А это вообще каким местом тут? Вы слышали про эту API? Очень приятно. А что если я опубликую здесь все API, про которые я что либо слышал?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Блокировка доступа к флоппи-дисководу

Сообщение Хакер » 25.01.2006 (Ср) 16:40

ANDLL писал(а):
Хакер писал(а):
Код: Выделить всё
Declare Function DeviceIoControl Lib "kernel32" (ByVal hDevice As Long, ByVal dwIoControlCode As Long, lpInBuffer As Any, ByVal nInBufferSize As Long, lpOutBuffer As Any, ByVal nOutBufferSize As Long, lpBytesReturned As Long, lpOverlapped As Any) As Long

А это вообще каким местом тут? Вы слышали про эту API? Очень приятно. А что если я опубликую здесь все API, про которые я что либо слышал?


Наверное тебя забанят за лишний гиг в базе данных :lol: А вообще попробуй.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Fil
Обычный пользователь
Обычный пользователь
 
Сообщения: 61
Зарегистрирован: 23.01.2006 (Пн) 14:17

Сообщение Fil » 25.01.2006 (Ср) 17:47

И как мне в этих параметрах разбираться? Одна деклара мало чего мне дает. Я ее и в книге видел, да в лом было разьираться...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 25.01.2006 (Ср) 17:55

Lasciate ogni speranza, voi ch'entrate.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 25.01.2006 (Ср) 19:01

Fil писал(а):И как мне в этих параметрах разбираться? Одна деклара мало чего мне дает. Я ее и в книге видел, да в лом было разьираться...

Я уже выразил сомнения относительно того, чем тут может помоч данная функция...
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 26.01.2006 (Чт) 7:51

Вообщем нарыл я тут кодик на делфях, надеюсь разберешся (если нет, тогда и флоп тебе блокировать не к чему):
Код: Выделить всё
const
FILE_DEVICE_FILE_SYSTEM: Integer = $00000009;
METHOD_BUFFERED: Integer = $00000000;
FILE_ANY_ACCESS: Integer = $00000000;

function CTL_CODE(DeviceType, FunctionNo, Method, Access: Integer): Integer;
begin
Result := (DeviceType shl 16) or (Access shl 14) or (FunctionNo shl 2) or (Method);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
LHandle: THandle;
BytesReturned: Cardinal;
MsgBuf: PChar;
FSCTL_LOCK_VOLUME: Integer;
begin
FSCTL_LOCK_VOLUME := CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 6,
                                                  METHOD_BUFFERED, FILE_ANY_ACCESS);
LHandle := CreateFile('\\.\A:', GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ
                      or FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL or
                      FILE_FLAG_DELETE_ON_CLOSE, 0);
if LHandle <> 0 then
begin
   if DeviceIOControl(LHandle, FSCTL_LOCK_VOLUME, nil, 0, nil, 0, BytesReturned, nil) then
     ShowMessage('Дисковод заблокирован. Нажмите ОК для разблокирования.')
   else
   begin
     if FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER or
          FORMAT_MESSAGE_FROM_SYSTEM, nil, GetLastError(), 0, @MsgBuf, 0, nil) > 0 then
     begin
       ShowMessage('Ошибка DeviceIOControl: ' + MsgBuf);
       LocalFree(Cardinal(MsgBuf));
     end
     else
       ShowMessage('Ошибка при вызове DeviceIOControl!');
   end;
   CloseHandle(LHandle);
end
else
   ShowMessage('Ошибка при вызове CreateFile!');
end;
А я все практикую лечение травами...

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 26.01.2006 (Чт) 12:45

Господи! Ну почему люди всегда усложняют себе жизнь???
Код: Выделить всё
Option Explicit
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Sub Form_Load()
Dim hFile As Long
hFile = CreateFile("\\.\A:", &H80000000, 0, 0, 3, 0, 0)
MsgBox "Нажмите 'OK' что бы разблокировать дисковод"
CloseHandle hFile
End
End Sub

Ну неужели не у кого не хватило ума просто прочитать ВНИМАТЕЛЬНО все посты этого топика?????
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 26.01.2006 (Чт) 17:29

Ну неужели не у кого не хватило ума просто прочитать ВНИМАТЕЛЬНО все посты этого топика?????

Кажись мы с тобой один и тот же код дали, только ты на VB.
Или нет?... :wink:
А я все практикую лечение травами...

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 26.01.2006 (Чт) 19:17

эээ :?
Совсем нет. Можно хотя бы заметить, что в моем коде нет упоминания про DeviceIOControl(а в твоем есть и много).
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 27.01.2006 (Пт) 8:04

эээ :?
Совсем нет

Суть решения одна hFile = CreateFile("\\.\A:", &H80000000, 0, 0, 3, 0, 0). А DeviceIoControl используется для проверки. Вообщем почитай мой код...
Ну да ладно, не будем разводить демогогию... :wink:
А я все практикую лечение травами...

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 27.01.2006 (Пт) 8:37

Да ну??? А может ты сам ради интереса почитаеш свой код???
И попробуй убрать оттуда вызовы DeviceIOControl, девайс блоикроваться не будет. Ты вообще, понял хоть как действует ТВОЙ код? А мой?
Если в двух кодах есть две одинаковые API-функции это еще совсем не означает, что коды одинаковые.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 27.01.2006 (Пт) 8:56

Только сейчас прочитал внимательно. На счет просто проверки и сути решения - тут я оБшибся!... Сорри. :oops:
А я все практикую лечение травами...

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 27.01.2006 (Пт) 10:56

Не совсем по теме, но что означает дельфовский оператор shl ? :) (Result := (DeviceType shl 16) or (Access shl 14) or (FunctionNo shl 2) or (Method))
Если всё делать своими ручками, они скоро отвалятся !

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 27.01.2006 (Пт) 11:24

Совершенно не знаю дельфи, но могу предположить, что shl=Shift Left.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 27.01.2006 (Пт) 11:25

Этот оператор сдвигает биты операнда влево. (кстати не только делфийский...)
А я все практикую лечение травами...

Fil
Обычный пользователь
Обычный пользователь
 
Сообщения: 61
Зарегистрирован: 23.01.2006 (Пн) 14:17

Сообщение Fil » 27.01.2006 (Пт) 12:32

Инересно, конечно, но меня всегда мучает вопрос, когда находишься на форуме по ВБ, а тут вдруг код из Дельфи или Си, может этим людям посидеть на форумах по другим языкам?
ANDLL
Спасибо, буду тестить!

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 27.01.2006 (Пт) 13:12

может этим людям посидеть на форумах по другим языкам?

Дружиже, я прекрасно программирую на VB, Delphi и MASMе. С басика я начинал. Поэтому даю тот код, который быстрее найду. Если ты не можешь перевести с делфей на басик, то это говорит не в пользу твоих знаний. И на последок - если тебе не нравиться, как тебе помогают, то не задавай вопросы. Любой нормальный человек всегда рад любой помощи... :evil:
А я все практикую лечение травами...

След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 73

    TopList  
cron