Есть драйвер. 1. Как узнать системную директорию? В юзермоде была функция типа GetSystemDir() или как-то так.. Давал пусть типа c:\winxp\system32\ Есть ли нечто подобное в ядре? 2. Как идентифицировать приложение, которое открывает мое устройство, созданное моим драйвером, через СreateFile... Хотелось бы узнать имя приложения, или хендл или любую другую идентифицирующую его информацию... В драйвере есть обработчик DriverObject->MajorFunction[IRP_MJ_CREATE] = DriverObject->MajorFunction[IRP_MJ_CLOSE] = DispatchCreateClose; Так каким образом можно вытащить информацию? 3. Как узнать путь и имя самого драйвера? Допустим c:\projects\driver007.sys или типа того.. Спасибо. Поиск юзал, темы смотрел... Вопросы актуальны на данный момент..
test555 > Считать из UsSharedData. Смещение наверно меняетсо в зав. от версии, но это не столь важно, главное адрес виртуальный меняетсо однозначно. Но можно вместо определения его заюзоть MmMapIoSpace(), передав в качестве физического адреса 0x41000. > Раскрыть символическую ссылку, например \SystemRoot, но вернётся имя не в дос-формате, т. е. на c:\windows, а \Device\Harddisk..., последнее можно преобразовать к дос-формату(дос-имя это тоже символическая ссылка). 2. Вызов в контексте вызывающего процесса. Заюзоть например PsGetCurrentProcessId() для получения PID. 3. Вариантов множество, например вручную из загрузчика считать.
К 3 пункту добавлю: Код (Text): NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING RegPath) {...} RegPath указывает на ключ в реестре, откуда можно считать полный путь к драйверу и его имя
нет, не обязательно, имя драйвера может быть относительным. например для сервиса "aec" (без понятия что это, просто первый попался) - system32\drivers\aec.sys или даже путь может бть таким: \SystemRoot\System32\drivers\afd.sys что совшеренно ничего тебе не скажет о системной директории
Clerk а можно просто посмотреть в реестре HKLM\SOFTWARE\Microsoft\Windows NT\Current Version, значение "PathName"
Great Физический адрес этой страницы в XP и Vista одинаков, виртуальные отличаются, как в ост. не помню. А смещение этого поля постоянно вроде как 0x30. А насчёт гадёжности громко сказано.
мейби но помоему лучше привязываться к документированным фичам типа реестра чем к недокументиорванным структурам =)