Форум: "Система";
Текущий архив: 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