Re[21]: Можно ли в драйвере получить имя юзера?
От: Valerio Россия linkedin.com/in/boronin
Дата: 27.02.04 05:39
Оценка:
А>я так понял что IoCancelFileOpen() нужно использовать в CREATE CompletionRoutine, но опять тот же вопрос — к этому времени я буду знать имя файла ? Ведь наскока я понимаю управление ещё не вернётся в мой Dispatcher ...
Имя в Вашей completion Вы уже будете знать — CREATE синхронная операция.

до вызова IoCallDriver(...); Вы можете отменть запрос штатным методом — не вызывать IoCallDriver(...); и просто вернуть ошибку, поэтому IoCancelFileOpen реально нужен в completion и Ваша схема вполне рабочая (только обычно я возвращаю STATUS_ACCESS_DENIED). Часто без completion не обойтись ибо приходится открывать файл чтобы хотя бы его имя получить либо какую-то иную информацию из самого файла\о нем самом — не директория ли он например.

стоит отметить что IoCancelFileOpen это 2000 и выше, однако на NT4 реализация довольно тривиальна: это посылка синхронных CLEANUP & CLOSE, как и написано в статье от OSR.
... << RSDN@Home 1.1.3 beta 1 >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[22]: Можно ли в драйвере получить имя юзера?
От: Canavaro Россия  
Дата: 27.02.04 07:42
Оценка:
Здравствуйте, Valerio, Вы писали:

Всем спасибо, я сделал, всё работает :
Сохраняю pFileObj перед вызовом IoCallDriver();
На обратном пути от файловой системы в CompletoinRoutine получаю имя файла;
Там же, если надо, вызываю IoCancelFileOpen;
PtrIrp->IoStatus.Status = STATUS_UNSUCCESSFUL;
return STATUS_SUCCESS;

кстати какая разница между STATUS_UNSUCCESSFUL и STATUS_ACCESS_DENIED ?
Re[23]: Можно ли в драйвере получить имя юзера?
От: Valerio Россия linkedin.com/in/boronin
Дата: 27.02.04 08:51
Оценка:
C>кстати какая разница между STATUS_UNSUCCESSFUL и STATUS_ACCESS_DENIED ?
разница в семантическом смысле
просто чаще всего приложения готовы к обработке STATUS_ACCESS_DENIED чем абстрактного неуспеха
... << RSDN@Home 1.1.3 beta 1 >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.