Можно ли открыть объект типа "тип" (из числа тех, что в \ObjectTypes) и что-нибудь с ним сделать? Или они там просто для красоты болтаются, а сделать с ними ничего нельзя?
по всей видимости, система юзает их для установки значения OBJECT_TYPE конкретного обьекта ядра, а что ты собсно делать с ними собрался, и что в твоём понимании значит "открыть"?
"Открыть" в моём понимании значит "получить хэндл". Видимо, ObOpenObjectByName это делает. Вопрос в другом -- что потом можно сделать с этим объектом, кроме как закрыть обратно?
Great только что втыкал сорцы реактоса - по всей видимости мы получим структуру, которая описывает тип обьекта Код (Text): typedef struct _OBJECT_TYPE_INITIALIZER { USHORT Length; UCHAR UseDefaultObject; UCHAR CaseInsensitive; ULONG InvalidAttributes; GENERIC_MAPPING GenericMapping; ULONG ValidAccessMask; UCHAR SecurityRequired; UCHAR MaintainHandleCount; UCHAR MaintainTypeList; POOL_TYPE PoolType; ULONG DefaultPagedPoolCharge; ULONG DefaultNonPagedPoolCharge; OB_DUMP_METHOD DumpProcedure; OB_OPEN_METHOD OpenProcedure; OB_CLOSE_METHOD CloseProcedure; OB_DELETE_METHOD DeleteProcedure; OB_PARSE_METHOD ParseProcedure; OB_SECURITY_METHOD SecurityProcedure; OB_QUERYNAME_METHOD QueryNameProcedure; OB_OKAYTOCLOSE_METHOD OkayToCloseProcedure; } OBJECT_TYPE_INITIALIZER, *POBJECT_TYPE_INITIALIZER; хотя хз, может и нет =))
Cr4sh ну да, так и есть. только не её, а OBJECT_TYPE* мы получим. tyomitch ну во-первых, на хендл смело забить и получить указатель на сам объект через ObReferenceObjectByName или ObReferenceObjectByHandle. А дальше его можно куданить передать, где просят OBJECT_TYPE
Cr4sh, это не та структура. Это параметр ObCreateObjectType. Great, вот я и допытываюсь -- где именно просят OBJECT_TYPE? Т.е. что можно с этим объектом сделать, получив ссылку? Зачем он, фактически, нужен?
Great точно, сорри >> где именно просят OBJECT_TYPE? много где, даже в том же ObReferenceObjectByName/ObReferenceObjectByHandle >> Зачем он, фактически, нужен? дык за тем, чтоб определять тип других обьектов ядра... т.е., фактически конкретное значение OBJECT_TYPE соответствует конкретному типу обьекта ядра
>> где именно просят OBJECT_TYPE? > много где, даже в том же ObReferenceObjectByName/ObReferenceObjectByHandle Ух ты, и действительно. Как же я тогда открою тип по имени, если у меня нет OBJECT_TYPE для типа "тип"?
>> Ух ты, и действительно. Как же я тогда открою тип по имени, если у меня нет OBJECT_TYPE для типа "тип"? ObOpenObjectByName -> ObReferenceObjectByHandle (в ней ObjectType опциональный, в отличии от ObReferenceObjectByName) на крайняк можно просканить эту директорию обьектов руками =))