Здравствуйте всем! Возникла следующая ситуация: имеется драйвер-фильтр, который я хочу открыть в приложении с помощью функции Код (Text): m_hDriver = CreateFile( IPM_SYMBOLIC_DRIVER_NAME, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL ); Если приложение работает под админом — все отлично. Как только запускаю приложение под пользователем без прав админа, при открытии драйвера появляется ошибка access denied. В связи с этим хотелось бы спросить у участников форума, возможно ли открытие драйвера под user-ом с помощью CreateFile. Может быть помогут некие манипуляции с параметром LPSECURITY_ATTRIBUTES, который сейчас NULL.
tisole Какой именно девайс ты пытаешься открыть - CDO или FiDO? Как создаётся этот девайс в драйвере и как он там используется?
tisole 1)Простой юзер не должен иметь доступ к драйверам. Это как аксиома. 2) LPSECURITY_ATTRIBUTES данный параметер действует только если вы создаете объект, но не открываете. А обращения к драйверу подрозумевает открытия (OPEN_EXISTING). Из под обычного пользователя таким способом нельзя обращатся к драйверу. Либо через промежуточное звено(сервис ) либо через шаред мемори(PIPEs, LPC которое создает драйвер ).
Я имею дело с NdisIMDriver. RegisterDevice в драйвере осуществляется как-то так Код (Text): MajorFunction[IRP_MJ_CREATE] = IoDispatch; MajorFunction[IRP_MJ_CLOSE] = IoDispatch; MajorFunction[IRP_MJ_DEVICE_CONTROL] = IoDispatch; MajorFunction[IRP_MJ_CLEANUP] = IoDispatch; Status = NdisMRegisterDevice(m_Handle, "\\Device\\", "\\DosDevices\\", &MajorFunction[0], &pDeviceObject, &m_pNdisDeviceHandle);