Что можно сделать с типом?

Тема в разделе "WASM.WIN32", создана пользователем tyomitch, 18 фев 2007.

  1. tyomitch

    tyomitch New Member

    Публикаций:
    0
    Регистрация:
    15 май 2006
    Сообщения:
    15
    Можно ли открыть объект типа "тип" (из числа тех, что в \ObjectTypes) и что-нибудь с ним сделать? Или они там просто для красоты болтаются, а сделать с ними ничего нельзя?
     
  2. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    по всей видимости, система юзает их для установки значения OBJECT_TYPE конкретного обьекта ядра, а что ты собсно делать с ними собрался, и что в твоём понимании значит "открыть"?
     
  3. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Cr4sh
    наверное он имеет в виду сделать ObReferenceObjectByName :P
     
  4. tyomitch

    tyomitch New Member

    Публикаций:
    0
    Регистрация:
    15 май 2006
    Сообщения:
    15
    "Открыть" в моём понимании значит "получить хэндл". Видимо, ObOpenObjectByName это делает. Вопрос в другом -- что потом можно сделать с этим объектом, кроме как закрыть обратно?
     
  5. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    Great
    только что втыкал сорцы реактоса - по всей видимости мы получим структуру, которая описывает тип обьекта
    Код (Text):
    1. typedef struct _OBJECT_TYPE_INITIALIZER
    2. {
    3.     USHORT Length;
    4.     UCHAR UseDefaultObject;
    5.     UCHAR CaseInsensitive;
    6.     ULONG InvalidAttributes;
    7.     GENERIC_MAPPING GenericMapping;
    8.     ULONG ValidAccessMask;
    9.     UCHAR SecurityRequired;
    10.     UCHAR MaintainHandleCount;
    11.     UCHAR MaintainTypeList;
    12.     POOL_TYPE PoolType;
    13.     ULONG DefaultPagedPoolCharge;
    14.     ULONG DefaultNonPagedPoolCharge;
    15.     OB_DUMP_METHOD DumpProcedure;
    16.     OB_OPEN_METHOD OpenProcedure;
    17.     OB_CLOSE_METHOD CloseProcedure;
    18.     OB_DELETE_METHOD DeleteProcedure;
    19.     OB_PARSE_METHOD ParseProcedure;
    20.     OB_SECURITY_METHOD SecurityProcedure;
    21.     OB_QUERYNAME_METHOD QueryNameProcedure;
    22.     OB_OKAYTOCLOSE_METHOD OkayToCloseProcedure;
    23. } OBJECT_TYPE_INITIALIZER, *POBJECT_TYPE_INITIALIZER;
    хотя хз, может и нет =))
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Cr4sh
    ну да, так и есть. только не её, а OBJECT_TYPE* мы получим.

    tyomitch
    ну во-первых, на хендл смело забить и получить указатель на сам объект через ObReferenceObjectByName или ObReferenceObjectByHandle.
    А дальше его можно куданить передать, где просят OBJECT_TYPE
     
  7. tyomitch

    tyomitch New Member

    Публикаций:
    0
    Регистрация:
    15 май 2006
    Сообщения:
    15
    Cr4sh, это не та структура. Это параметр ObCreateObjectType.

    Great, вот я и допытываюсь -- где именно просят OBJECT_TYPE? Т.е. что можно с этим объектом сделать, получив ссылку? Зачем он, фактически, нужен?
     
  8. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    Great
    точно, сорри

    >> где именно просят OBJECT_TYPE?
    много где, даже в том же ObReferenceObjectByName/ObReferenceObjectByHandle

    >> Зачем он, фактически, нужен?
    дык за тем, чтоб определять тип других обьектов ядра... т.е., фактически конкретное значение OBJECT_TYPE соответствует конкретному типу обьекта ядра
     
  9. tyomitch

    tyomitch New Member

    Публикаций:
    0
    Регистрация:
    15 май 2006
    Сообщения:
    15
    >> где именно просят OBJECT_TYPE?
    > много где, даже в том же ObReferenceObjectByName/ObReferenceObjectByHandle
    Ух ты, и действительно. Как же я тогда открою тип по имени, если у меня нет OBJECT_TYPE для типа "тип"?
     
  10. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    >> Ух ты, и действительно. Как же я тогда открою тип по имени, если у меня нет OBJECT_TYPE для типа "тип"?
    ObOpenObjectByName -> ObReferenceObjectByHandle (в ней ObjectType опциональный, в отличии от ObReferenceObjectByName)
    на крайняк можно просканить эту директорию обьектов руками =))