Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.11.13;
Скачать: [xml.tar.bz2];

Вниз

блокировка 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.11.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.046 c
14-1130152811
Беспечный_Ангел
2005-10-24 15:20
2005.11.13
Алгоритм оптимального расположения отрезков


6-1122892321
Pool
2005-08-01 14:32
2005.11.13
Socket preconfig?


1-1130011760
starling13
2005-10-23 00:09
2005.11.13
строки из DLL


2-1130311987
HEXO4YXA
2005-10-26 11:33
2005.11.13
Работа с Variant


2-1129720063
Df23
2005-10-19 15:07
2005.11.13
Не понимаю, почему так.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский