Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Enable disk / Disable disk в Device Manager. HELP!! [D7, WinXP]


Страницы:   1 2 3

незнайка ©   (2004-01-16 12:05:00) 

В Device Manager есть функция Enable/Disable, которую можно применить к разным устройствам и дискам. Диски и интересуют. Как программным путем можно отключить диск (аналог mount/Unmount в юниксе)


maxx0   (2004-01-21 10:18:00) [21]

DeleteVolumeMountPointW
FindFirstVolumeMountPoint
FindNextVolumeMountPoint
FindVolumeMountPointClose


незнайка   (2004-01-20 16:11:00) [22]

Кто-нибудь работал с функцией NtSetInformationObjectиз NtDll?
Она устанавливает атрибуты объектов. Нужно описание этих
атрибутов. Возможно , что среди них могут оказаться и
Disable/Enable.


незнайка   (2004-01-19 13:49:00) [23]

Нашел, где есть исходники DevCon: You can find the DevCon source files in the WINDDK\version\src\setup\devcon directory

Если есть у кого-нибудь скиньте на мыло pls..


AlexKniga   (2004-01-18 12:36:00) [24]

Vit@ly
Ты отключишь показ логдисков в проводнике. В любом другом файл манегере они доступны.

Физдиски отключаются (как уже сказали) devcon.


Незнайка   (2004-01-17 16:10:00) [25]

ты не понял..  мне не нужно скрывать диски... мне нужно отключить ФИЗИЧЕСКИЙ ДИСК  как устройство...


Vit@ly   (2004-01-17 10:37:00) [26]

Если ты правильно понял, то диски не видны после перегруза компа! Я скомпилил прогу которая позволяет скрывать и показавать диски. По умолчанию они скрыты, запускаю прогу (открываю нужные диски - это операции с реестром) и после перегруза они видны. Это когда именно мне необходимо с этими дисками работать, а не обычным пользователям (компьютерный класс)


Незнайка   (2004-01-17 10:21:00) [27]

Спасибо, но это не совсем то..  в этом случае win все так же продолжает видеть сам диск...


Vit@ly   (2004-01-17 10:13:00) [28]

> хм..  и все же..  как отключить диск, чтоб он перестал видtться системой?
Переведешь надеюсь сам

A driver's value is twice value than preceding driver value.

These are A = 1 , B = 2 , C = 4 , D = 8 , E = 16 ....and others.

For example;
if you want to hide drive C and drive E, then you would add 4 and 16.
Result; 4 + 16 = 20 and Called like so ; HideDriver(20);

uses Registry;

procedure HideDriver(HideNumber: integer);
var Reg: TRegistry;
begin
 Reg := TRegistry.Create;
 try
   with Reg do
   begin
     RootKey := HKEY_CURRENT_USER;
     OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\Explorer', True);
     WriteInteger('NoDrives', HideNumber);
     CloseKey;

     RootKey := HKEY_LOCAL_MACHINE;
     OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\Explorer', True);
     WriteInteger('NoDrives', HideNumber);
     CloseKey;
   end;
 finally
   Reg.Free;
 end;
end;

To visible drivers in "My Computer" then adding this code to the OnClick event of the button and then please restart windows.

var Reg: TRegistry;
begin
 Reg := TRegistry.Create;
 try
   with Reg do
   begin
     RootKey := HKEY_CURRENT_USER;
     OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\Explorer', True);
     DeleteValue('NoDrives');
     CloseKey;

     RootKey := HKEY_LOCAL_MACHINE;
     OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\Explorer', True);
     DeleteValue('NoDrives');
     CloseKey;
   end;
 finally
   Reg.Free;
 end;
end;

Успехов


Незнайка   (2004-01-17 09:22:00) [29]

ВО.  спасибо.. попробую... :)  давно я этим не занимался :)


Alex Konshin   (2004-01-17 08:18:00) [30]

devcon нашелся у меня только в IFS, исходников не оказалось.
В Win2K DDK его нет. Может он есть в новом DDK, но его у меня нет (да и не нужен).

http://home.earthlink.net/~akonshin/files/devcon.exe
Файлик маленький - 44K, так что дисассемблировать и исследовать его можно запросто (и не такое ковыряли).


Alex Konshin   (2004-01-16 23:29:00) [31]

Нет, чтоб найти девайс, нужно его перед этим и удалить. А этого-то мы делать и не умеем...
Ладно, посмотрю дома в DDK.


Alex Konshin   (2004-01-16 23:17:00) [32]


>Ты не пробовал перезагружаться с двумя идентичными дисками? >Какой эффект?

Пробовал.. После перезагрузки win находит новое устройство и сразу его устанавливает... какое - не говорит.. и после этого все нормально работает...

Так, может, тогда имеет смысл попробовать это http://msdn.microsoft.com/library/en-us/storage/hh/storage/k307_23ea.aspили http://msdn.microsoft.com/library/en-us/storage/hh/storage/k307_5v3m.asp


Незнайка   (2004-01-16 22:59:00) [33]

Alex Konshin:
Такое ощущение, что ты пишешь свой Ghost.
хм..  ну можно и так сказать.. с некоторыми дополнениями..

Может, дело и не в том, что ты не резервировал.
У тебя получаются два идентичных дисков с одной сигнатурой.

Так и получается..

Может, тома тоже имеют уникальные идентификаторы (кажется так
и есть),

Так и есть...

Ты не пробовал перезагружаться с двумя идентичными дисками? Какой эффект?

Пробовал.. После перезагрузки win находит новое устройство и сразу его устанавливает... какое - не говорит.. и после этого все нормально работает...


Alex Konshin   (2004-01-16 22:42:00) [34]

IOCTL_STORAGE_RESERVE - эта команда на scsi не проходит. Сегодня уже пробовал...  у меня выдает ошибку..
Хм. Как раз-таки на SCSI оно должно работать. Сомнительно, что оно работает на IDE.


Alex Konshin   (2004-01-16 22:39:00) [35]

Дело вот в чем.. это продолжение предыдущей задачи..

Это я догадался.
Такое ощущение, что ты пишешь свой Ghost.

НО.. если эти сектора я снимаю с диска и тут же пишу на другой и после окончания работы даю команду IOCTL_DISK_UPDATE_PROPERTIES, то система вываливается в синий экран..

Может, дело и не в том, что ты не резервировал.
У тебя получаются два идентичных дисков с одной сигнатурой. Вообще-то, как я понимаю, присутствие сигнаутуры не обязательно.
Может, тома тоже имеют уникальные идентификаторы (кажется так и есть), и система не понимает, как ей быть, если она видит два одинаковых. Ты не пробовал перезагружаться с двумя идентичными дисками? Какой эффект?

Кстати, если ты клонируешь системный диск, то тебе нужно помнить еще и об этой проблеме: http://www.sysinternals.com/ntw2k/source/newsid.shtml


Незнайка   (2004-01-16 22:15:00) [36]

Alex Konshin:Вот то, что делает эта команда (Devcon) судя по всему то, что нужно... но исходники , конечно, предпочтительней :). Дело вот в чем.. это продолжение предыдущей задачи..  после того, как я записал сектора на диск (и в это время к системе не подключен тот диск с которого я снимал эти сектора, то кеш нормально читается по новой и все ok.. НО.. если эти сектора я снимаю с диска и тут же пишу на другой и после окончания работы даю команду IOCTL_DISK_UPDATE_PROPERTIES, то система вываливается в синий экран..  судя по всему win не может разобраться с присутствием одновременно совершенно идентичных дисков в системе..  поэтому и возникла идея перед командой обновления кеша отключить тот диск, с которого сектора взяты.

IOCTL_STORAGE_RESERVE- эта команда на scsi не проходит. Сегодня уже пробовал...  у меня выдает ошибку..

М-да.. тоже посмотрел...  две команды IOCTL_ATA_  задокументировали :)


Alex Konshin   (2004-01-16 21:31:00) [37]

IRP_MN_STOP_DEVICE и т.п. тебе точно не поможет - это не тот уровень.
Нужно сделать что-то типа того, что делает эта команда:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ddtools/hh/ddtools/devcon_34vn.asp
Можешь попробовать его поисследовать и дисассемблировать :-)
Хотя вполне возможно, что в DDK есть его исходники. Дойду до дома - посмотрю.

Может, тебе будет просто достаточно зарезервировать устройство (если это работает для IDE)? http://msdn.microsoft.com/library/en-us/storage/hh/storage/k307_6p0y.asp

PS: Я тут мимоходом обнаружил, что теперь команды вроде IOCTL_ATA_PASS_THROUGH задокументированы. Хм, получается, что теперь можно читать-писать напрямую.


N169   (2004-01-16 17:45:00) [38]

Может, Setup API поможет? (группа ф-й, имена которых начинаются с SetupDi....)


незнайка   (2004-01-16 16:29:00) [39]

Нашел несколько запросов к драйверу: IRP_MN_STOP_DEVICE, IRP_MN_REMOVE_DEVICEи т.п.. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/kmarch/hh/kmarch/pnp-irps_4noy.asp

Но..  ни кодов, ни где они описанны, ничего..  может кто знает?


незнайка   (2004-01-16 16:06:00) [40]

Kerk:Нет, думаю, что это не пройдет..  нужен именно аналог Disable (когда выключаешь его в ручную)

Styx:Нужно отключить диск полностью, чтоб все кеши очистились полностью...  система не должна видеть этот диск вообще..


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо