Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.13;
Скачать: CL | DM;

Вниз

блокировка FLASH (сьемного накопителя usb )   Найти похожие ветки 

 
user51   (2005-08-26 11:34) [0]

как можно програмно отключить включить флашку
(человек вставляет ее она не работет пока не включим)
и можно ли разрешть только чтение а запись включать потом


 
--=ХР=--   (2005-08-26 11:54) [1]

1. Не вставлять
2. На многих флэшках есть банальный железный локер.


 
Rouse_ ©   (2005-08-26 12:50) [2]

В DDK есть пример драйвер-фильтра. Блокируй обращение к устройству через него.


 
КодеКорешь   (2005-08-26 18:01) [3]

DeviceIoControl
см пример по извлечению носителя из CDROM


 
user51   (2005-09-07 15:47) [4]

DeviceIoControl не 100% срабатывает - если открыт хоть один файл на флашке то не сработает. Также иногда не срабатывает даже когда я на своем компе делаю причем вообще необращаюсь к флашке (Ошибка DeviceIOControl)
Моя прога отлавливает то что вставили флашку ждет пока система присвоит букву потом использует DeviceIoControl
Здесь кто кого обгонит человек который вставил флашку и успел ее выбрать или моя прога. Хотя может я не правильно использую DeviceIoControl можно ли примерчик или вообще принципиально что нибудь другое (мыль у меня при получении сообщения что флашку вставили послать ложное сообщение что ее вынули. может кто поможет в этом направлении)

мой код

ch -буква которую присвоила система
number_flash- номер флашки если вставили более 1

LHandle              :array [1..5] of THandle;
BytesReturned        :array [1..5] of Cardinal;
MsgBuf               :array [1..5] of PChar;
FSCTL_LOCK_VOLUME1    :array [1..5] of Integer;

procedure TFfake.lock_flash(ch:char;number_flash:integer);
const
FILE_DEVICE_FILE_SYSTEM: Integer = $00000009;
METHOD_BUFFERED: Integer = $00000000;
FILE_ANY_ACCESS: Integer = $00000000;
begin
FSCTL_LOCK_VOLUME1[number_flash] := CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 6,METHOD_BUFFERED, FILE_ANY_ACCESS);
LHandle[number_flash] := CreateFile(pchar("\\.\"+ch+":"), 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[number_flash] <> 0 then
begin
if DeviceIOControl(LHandle[number_flash], FSCTL_LOCK_VOLUME1[number_flash], nil, 0, nil, 0, BytesReturned[number_flash], nil) then
 RxRichEdit2.Lines.add("ДИСК " +ch+": ЗАБЛОКИРОВАН")
  else
  begin
    if FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER or
         FORMAT_MESSAGE_FROM_SYSTEM, nil, GetLastError(), 0, @MsgBuf[number_flash], 0, nil) > 0 then
    begin
      RxRichEdit2.Lines.add(ch+": Ошибка DeviceIOControl: " + MsgBuf[number_flash]);
      LocalFree(Cardinal(MsgBuf[number_flash]));
    end
    else
      RxRichEdit2.Lines.add(ch+": Ошибка при вызове DeviceIOControl!");
  end;
//   CloseHandle(LHandle[number_flash]); я убрал  вызывается в другой процедуре
end
else
    RxRichEdit2.Lines.add(ch+": Ошибка при вызове CreateFile!");
  end;



Страницы: 1 вся ветка

Текущий архив: 2005.11.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.028 c
4-1126192740
incm
2005-09-08 19:19
2005.11.13
Проблема с таймером


14-1130154592
Del_programmer
2005-10-24 15:49
2005.11.13
Другая жизнь...


2-1129877717
TruthMan
2005-10-21 10:55
2005.11.13
Количество пикселей на микрон


6-1122136315
kami
2005-07-23 20:31
2005.11.13
Переслать несколько больших файлов Client/Serv Socket


2-1129983763
Ромио
2005-10-22 16:22
2005.11.13
Office