Re[5]: DefineDosDevice-удалить устройство из драйвера?
От: Аноним  
Дата: 29.08.06 10:09
Оценка:
Здравствуйте, argent, Вы писали:

пожалуйста следите за объемом цитирования — модератор

A>сейчас попробую... хотя сдается мне что PnP здесь совсем ни при чем, мы же просто создаем символическую ссылку, и связываем ее с устройством...


Некоторые выдержки из документации про этот вызов, на которые хотел бы обратить внимание:

Do not use this routine to report system PnP events, such as GUID_TARGET_DEVICE_REMOVE_COMPLETE.


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

Custom notification can be used for events like a volume label change.


Ну, уж если этот вызов используется, чтобы уведомить систему о смене метки тома (volume label), то уж для уведомления о создании/удалении тома тоже подойдёт. Я думаю, сначала нужно удалить символьную ссылку, затем уведомить систему о том, что том уничтожен.

IoReportTargetDeviceChange is not supported on Windows 98/Me; it returns STATUS_NOT_IMPLEMENTED.


Не поддерживается для Windows 9x.

To report a target device change from raised IRQL, call IoReportTargetDeviceChangeAsynchronous.


На повышенном IRQ уровне использовать

NTSTATUS 
  IoReportTargetDeviceChangeAsynchronous(
    IN PDEVICE_OBJECT  PhysicalDeviceObject,
    IN PVOID  NotificationStructure,
    IN PDEVICE_CHANGE_COMPLETE_CALLBACK  Callback  OPTIONAL,
    IN PVOID  Context  OPTIONAL
    );


Да, и в качестве евента там надо сгенерить свой гуид.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.