V>Всем привет.
Даова.
V>Помогите, если кто знает.
А кто не знает — тем что теперь делать?
V>Мне надо получить PDRIVER_OBJECT для каждого работающего в системе драйвера.
Драйвера находятся в папке
\Driver.
Папка — имеется в виду объект —
directory — Менеджера объектов ядра.
Объекты, находящиеся в папке
\Driver, являются драйверами, т.е. имеют тип
IoDriverObjectType —
DRIVER_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