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

Вниз

Как можно в вынь2к, ХР закрыть доступ к дисководу??? Есть ли что то для етого в АПИ??   Найти похожие ветки 

 
gluka   (2002-02-16 02:47) [0]

Ну например как это делает DeviceLock!?!?!?!


 
Anatoly Podgoretsky   (2002-02-16 13:54) [1]

У администратора есть для этого стандартные средства системы и это не относится к функциям пользователя.


 
Ihor Osov'yak   (2002-02-17 22:09) [2]

Если програмно -
масдай - int 21h, func 440Dh, code 4Ah + юзание VWIN32.VXD
NT - ищи в MSDN вокруг FSCTL_LOCK_VOLUME


 
Tosov   (2002-02-18 00:10) [3]

Anatoly Podgoretsky
У администратора есть для этого стандартные средства системы
А можно поподробнее о СТАНДАРТНЫХ средствах системы?


 
Tosov   (2002-02-18 00:35) [4]

А чему равно это самое FSCTL_LOCK_VOLUME (и FSCTL_UNLOCK_VOLUME) ? Для дельфи это undeclared identifier, а С у меня нет...


 
Ihor Osov'yak   (2002-02-18 11:06) [5]

Ну С к этому отношение имеет лишь потому, что MS поставляет сишные хидера для системных вызовов .....

Есть такая вещь, как MSDN ... маст хев, если есть желание работать с системой в той части, которая ms документирована, а не лишь в той, которая борландами в windows.pas втиснута ...

... после нахождения сабжа в MSDN смотрим, где это дело живет
(декларировано), и пытаемся найти соотв. декларацию в делфях. Но - довольно высокая вероятность того, что соотв. вещь в делфях не продекларирована. Тогда ищем в инете, может какая добрая душа соотв. хидер перевела .... Если нет - делаем перевод соотв. фрагмента хидера сами ....
... в нашем случае - WinIOCtrl.h, довольно хороший перевод
есть в виде JwaWinIoctl.pas на
http://delphi-jedi.org or http://members.chello.nl/m.vanbrakel2





 
Tosov   (2002-02-19 00:16) [6]

Ihor Osov"yak
в нашем случае - WinIOCtrl.h, довольно хороший перевод
есть в виде JwaWinIoctl.pas

на delphi-jedi не нашел :-( А 2 сайт не работает (under Construction)
Да мне и не надо весь хедер. Надо всего 2 константы. Достал С++
FSCTL_LOCK_VOLUME = 589848
UNLOCK = 589852
Подставил в прогу - она не работает (хотя ошибок тоже нет)

gluka
А у тебя что-нибудь получилось?


 
Ihor Osov'yak   (2002-02-19 00:24) [7]

да я не проверенных советов не даю ...


вот, собст-но фрагменты


function OpenVolumeEx(letter: char;dwDesiredAccess, dwShareMode: DWORD):THandle;
begin
result := CreateFile(pchar("\\.\"+letter+":"),
dwDesiredAccess,dwShareMode,
nil, OPEN_EXISTING, 0, 0);
end;


function NT_LockVolumeEx(letter:char):integer;
var hDevice:THandle;
cb: DWORD;
begin
.....
hDevice:=OpenVolumeEx(letter,
GENERIC_READ or GENERIC_Write,
FILE_SHARE_READ or FILE_SHARE_WRITE);
if (hDevice <> INVALID_HANDLE_VALUE) then begin
if not DeviceIoControl(hDevice,
FSCTL_LOCK_VOLUME , nil, 0, nil,0, cb, nil) ....



 
Tosov   (2002-02-19 00:50) [8]

const
FSCTL_LOCK_VOLUME = 589848;
FSCTL_UNLOCK_VOLUME = 589852;

var
fHandle:THandle;
cbReturn:Cardinal;
begin
fHandle:=CreateFile("\\.\A:",GENERIC_ALL, FILE_SHARE_READ or FILE_SHARE_WRITE,
nil, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
if fHandle=0 then WriteLN("fHandle == 0");

if not DeviceIoControl(fHandle,FSCTL_LOCK_VOLUME,nil, 0, nil, 0,cbReturn,nil)
then WriteLN("Device Control Error");
CloseHandle(fHandle);
WriteLN("End of Program");
readln;
end.


Ошибок нет. Все работает нормально.
А как результат должен выглядеть? Что будет с флопом?


 
Ihor Osov'yak   (2002-02-19 02:35) [9]

Tosovу:



const
FSCTL_LOCK_VOLUME = 589848;
FSCTL_UNLOCK_VOLUME = 589852;

var
fHandle:THandle;
cbReturn:Cardinal;
begin
fHandle:=CreateFile("\\.\A:",GENERIC_ALL, FILE_SHARE_READ or FILE_SHARE_WRITE,
nil, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
if fHandle=0 then WriteLN("fHandle == 0");

if not DeviceIoControl(fHandle,FSCTL_LOCK_VOLUME,nil, 0, nil, 0,cbReturn,nil)
then WriteLN("Device Control Error")
else begin
write("FDD is locked .. Press Enter to unlock ...");
readln;
end;
CloseHandle(fHandle);
WriteLN("End of Program");
readln;
end.

после получения
FDD is locked .. Press Enter to unlock ...
и до нажатия enter попытайся чего то с a: сделать - ну прочитать
или записать с любой другой задачи, даже с проводника ...





 
_Tosov_   (2002-02-19 07:26) [10]

Те CloseHandle разблокирует его?
Попробую дома проверить.


 
Tosov   (2002-02-19 23:39) [11]

Ihor Osov"yak
Большое спасибо.Все РАБОТАЕТ!!!!


 
gluka   (2002-02-21 15:47) [12]

Да большое спасибо, работает!!!
Но чтоб уж до конца дойти то как можно перхватить обращение к дисководу (какое именно)??? Чтоб, к примеру показать свое окно с матюками ...
Очень благодарен!!!



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

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

Наверх




Память: 0.47 MB
Время: 0.007 c
1-64685
SPeller
2002-05-04 14:10
2002.05.20
События в Лэйбле


1-64587
Фантом
2002-05-07 16:34
2002.05.20
Где почитать про полигоны, регионы?


14-64802
Феликс
2002-04-10 19:28
2002.05.20
Возможно ли получение прибыли от владения сайтом?


1-64665
drt
2002-05-05 18:35
2002.05.20
Help!


1-64632
Демон
2002-05-05 02:40
2002.05.20
Как в StringGrid определить выделенную ячейку?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский