Главная страница
    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.039 c
1-1129910104
jiurasdfsdfs
2005-10-21 19:55
2005.11.13
Tms Adv Grid - как сделать суммрование и...?


14-1129794364
Vlad Oshin
2005-10-20 11:46
2005.11.13
Скажите, как запускать программу с приоритетом.


6-1113246676
Sergey12345
2005-04-11 23:11
2005.11.13
чат на winsock


4-1126705615
Новичоккк
2005-09-14 17:46
2005.11.13
Определение заголовка окна по PID


8-1117391048
Grief
2005-05-29 22:24
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский