Перечисление объектов типов в NT/2000/...
От: Аноним  
Дата: 05.05.02 20:50
Оценка:
Вопрос касается NT Native API.
При перечислении типов объектов (они же объекты типов) в NT-образных системах через перечисление элементов каталога \ObjectTypes они возвращаются не в том порядке, в каком занумерованы в системе, а в порядке из создания (вроде как так, хотя я в этом и не уверен).

Так вот и сам вопрос, как определить правильный порядок нумерации объектов типов не залезая в ядро?
Re: Перечисление объектов типов в NT/2000/...
От: Alex Fedotov США  
Дата: 05.05.02 20:52
Оценка:
Здравствуйте Аноним, Вы писали:

А>Вопрос касается NT Native API.

А>При перечислении типов объектов (они же объекты типов) в NT-образных системах через перечисление элементов каталога \ObjectTypes они возвращаются не в том порядке, в каком занумерованы в системе, а в порядке из создания (вроде как так, хотя я в этом и не уверен).

А>Так вот и сам вопрос, как определить правильный порядок нумерации объектов типов не залезая в ядро?


А какой порядок называется правильным?
-- Alex Fedotov
Re[2]: Перечисление объектов типов в NT/2000/...
От: Аноним  
Дата: 05.05.02 22:30
Оценка:
AF>А какой порядок называется правильным?
Вот такой (это для XP и .NET Server, для 2000-й тут нету DebugObject и KeyedEvent, для NT4 еще нет Job,WaitablePort и WmiGuid)
Нумерация с 1.

Type
Directory
SymbolicLink
Token
Process
Thread
Job
DebugObject
Event
EventPair
Mutant
Callback
Semaphore
Timer
Profile
KeyedEvent
WindowStation
Desktop
Section
Key
Port
WaitablePort
Adapter
Controller
Device
Driver
IoCompletion
File
WmiGuid
Re[3]: Перечисление объектов типов в NT/2000/...
От: Alex Fedotov США  
Дата: 05.05.02 22:48
Оценка:
Здравствуйте Аноним, Вы писали:

AF>>А какой порядок называется правильным?


А>Вот такой (это для XP и .NET Server, для 2000-й тут нету DebugObject и KeyedEvent, для NT4 еще нет Job,WaitablePort и WmiGuid)

А>Нумерация с 1.

А>Type

А>[...]
А>WmiGuid

ZwQueryObject с флагом ObjectAllTypesInformation?

Хотя, с другой стороны, я все равно не понимаю, чем важен порядок перечисления.
-- Alex Fedotov
Re[4]: Перечисление объектов типов в NT/2000/...
От: Аноним  
Дата: 06.05.02 17:32
Оценка:
Здравствуйте Alex Fedotov, Вы писали:

AF>ZwQueryObject с флагом ObjectAllTypesInformation?

Для этой функции уже надо иметь сам объект, чтоб скормить ей эго хэндл.
А если объекта нет — то и не узнать ничего.

AF>Хотя, с другой стороны, я все равно не понимаю, чем важен порядок перечисления.

*QuerySystemInformation возвращает номера типов, а не их имена.
Предположим, надо расположить типы в порядке возрастания их номера, то есть в том порядке, который получается при самой сборке винды.
Перечисляем объекты — имеем только номера типов.
Запрашиваем тип (строковый) для конкретного объекта — получаем его, это без проблем, но как минимум 5 типов не возвращаются, то есть *QuerySystemInformation такие объекты не перечисляет (возможно у меня их и нет, а может они вообще ядром не экспортируются). Но как тогда расположить те типы, экземпляры объектов которых отсутствуют в системе? Как определить их номера?

И кстати, почему иногда ZwQuerySystemInformation возвращает в буфере один тип (по номеру), а если запросить тип через ZwQueryObject для этого объекта — он будет другой?
Re[5]: Перечисление объектов типов в NT/2000/...
От: Alex Fedotov США  
Дата: 06.05.02 18:11
Оценка:
Здравствуйте Аноним, Вы писали:

AF>>ZwQueryObject с флагом ObjectAllTypesInformation?


А>Для этой функции уже надо иметь сам объект, чтоб скормить ей эго хэндл.

А>А если объекта нет — то и не узнать ничего.

Для ObjectAllTypesInformation можно передать NULL в качестве хэндла.
-- Alex Fedotov
Re[6]: Перечисление объектов типов в NT/2000/...
От: Аноним  
Дата: 06.05.02 19:37
Оценка:
Здравствуйте Alex Fedotov, Вы писали:

AF>Для ObjectAllTypesInformation можно передать NULL в качестве хэндла.

А... Понял...

Только у меня в OBJECT_ALL_TYPES_INFORMATION переменная NumberOfTypes на 2000й винде равна 0x17, а должно быть 0x1B (то есть 27)
Re[7]: Перечисление объектов типов в NT/2000/...
От: vasketsov Россия http://ntprog.by.ru
Дата: 08.05.02 19:48
Оценка:
up!

В кои-то веки нашелся человек, который хотя бы понимает о чем речь в моей проблеме.
И пропал.

ZwQueryObject от NULL с флагом ObjectAllTypesInformation неправильно отрабатывает, хоть и возвращает STATUS_SUCCESS.
Код приводить не буду, там все тривиально.
При парсении буфера оказывается, что NumberOfTypes меньше чем должно быть.
Даже если покласть на это значение и разобрать буфер, считая что 27 типов, то действительно последние несколько типов не возвращаются.

Это все на 2000AS(EN)+SP2+все фиксы.
NtGlobalFlag = 0

Помоги плиз, если знаешь что за ерунда такая.
Васкецов Сергей
http://registry.km.ru
Re[8]: Перечисление объектов типов в NT/2000/...
От: Alex Fedotov США  
Дата: 08.05.02 21:17
Оценка:
Здравствуйте vasketsov, Вы писали:

V>В кои-то веки нашелся человек, который хотя бы понимает о чем речь в моей проблеме.

V>И пропал.

V>Помоги плиз, если знаешь что за ерунда такая.


Нет, не знаю.
-- Alex Fedotov
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.