Re: Перечисление всех драйверов в системе
От: Unmanaged Россия ICQ 476611995
Дата: 03.12.07 15:53
Оценка:
V>Всем привет.

Даова.

V>Помогите, если кто знает.


А кто не знает — тем что теперь делать?

V>Мне надо получить PDRIVER_OBJECT для каждого работающего в системе драйвера.


Драйвера находятся в папке \Driver.
Папка — имеется в виду объект — directory — Менеджера объектов ядра.
Объекты, находящиеся в папке \Driver, являются драйверами, т.е. имеют тип IoDriverObjectTypeDRIVER_OBJECT.
Для работы с папками ядра предназначены следующие экспорты ядра:

ZwOpenDirectoryObject()
ZwQueryDirectoryObject()
ZwClose()

Вызов ZwQueryDirectoryObject() на данный момент почему-то недокументирован, вот его описание:

NTSYSAPI 
NTSTATUS
NTAPI
ZwQueryDirectoryObject (
  IN HANDLE               DirectoryObjectHandle,
  OUT PDIRECTORY_OBJECT_INFORMATION DirectoryObjectInformation,
  IN ULONG                BufferLength,
  IN BOOLEAN              GetNextIndex,
  IN BOOLEAN              IgnoreInputIndex,
  IN OUT PULONG           ObjectIndex,
  OUT PULONG              DataWritten OPTIONAL);

typedef struct _DIRECTORY_OBJECT_INFORMATION
{
  UNICODE_STRING          ObjectName;
  UNICODE_STRING          ObjectTypeName;
  BYTE                    Data [1];
}
DIRECTORY_OBJECT_INFORMATION, *PDIRECTORY_OBJECT_INFORMATION;


Более подробно здесь — просто замените префикс Nt- на Zw-.
Ещё более подробно — в исходниках ядра Windows Server 2003.

V>Заранее благодарен.


$100
STATUS_INVALID_DEVICE_REQUEST
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.