Anonymous
Гость
|
|
« : 27-10-2003 11:43 » |
|
Используя DriverWorks? IMHO, он должен быть KIrp::CurrentStackLocation()->Parameters.Create.SecurityContext->DesiredAccess но там, мусор. Как его еще можно добыть?
|
|
|
Записан
|
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #1 : 28-10-2003 06:39 » |
|
Да вроде только там могут быть параметры, переданные NtCreateFile.
|
|
|
Записан
|
|
|
|
Anonymous
Гость
|
|
« Ответ #2 : 28-10-2003 07:55 » |
|
А если используется просто CreateFile?
|
|
|
Записан
|
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #3 : 28-10-2003 09:00 » |
|
А CreateFile вызывает NtCreateFile из ntdll.dll, который переводит систему в режим ядра и вызывает NtCreateFile из ядра. Не путай функции режима ядра и юзер мод функции. Я говорил только про режим ядра, так как в юзер моде вобще ничего толкового не делается, и уж тем более не создается IRP, там только код перехода в режим ядра и код проверки параметров, переданных ф-ции, в независимости от того что вызывать- CreateFile/NtCreateFile/ZwCreateFile.
|
|
|
Записан
|
|
|
|
Anonymous
Гость
|
|
« Ответ #4 : 28-10-2003 09:32 » |
|
Может я тогда чего-то не понимаю. В указанной выше структуре всегда находится значение что-нибудь типа 0012fe55? указывает в никуда само значение тоже мало похоже на GENERIC_READ. Как его еще можно интепретировать?
BTW: А как обычно делают в драйверах дуплексный режим? Если ожидать прием данных, то ничего больше с драйвером не сделать, если создать нить, то что делать IRP_MJ_READ? Ее как бы надо закончить, но тогда и readfile ничего не получит. Пока только overlapped подходит, но это не совсем то.
|
|
|
Записан
|
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #5 : 28-10-2003 09:55 » |
|
Если запрос IRP_MJ_CREATE / IRP_MJ_CREATE_NAMED_PIPE / IRP_MJ_CREATE_MAILSLOT, то в pIrpStack->Parameters.Create.SecurityContext->DesiredAccess находится запрашиваемый уровень доступа. Естественно для других IRP_MJ_... запросов это не верно.
|
|
|
Записан
|
|
|
|
|