Конференция "WinAPI" » Строение "подструктуры" HANDLE_TABLE
 
  • Riply © (09.11.08 11:00) [0]
    Здравствуйте !
    Есть такая структура:
    typedef struct _HANDLE_TABLE
    {
      ULONG TableCode;
      .....

    Как я понимаю, в поле TableCode (если отбросить последние два бита)
    содержится указатель на первый элемент некого "массива".
    Подскажите, пожалуйста, что является элементами этого массива:
    сами структуры HANDLE_TABLE_ENTRY (8 байт) или указатели на них (PHANDLE_TABLE_ENTRY) ?
    А может что-то вообще другое ? :)
  • Riply © (09.11.08 20:10) [1]
    > [0] Riply ©   (09.11.08 11:00)
    > Подскажите, пожалуйста, что является элементами этого массива ?

    Если кому интересно...
    Вроде, там живут сами структуры.
    Вердикт не окончательный и подлежит обжалованию :)
    Во всяком случае, если устроить пробежку таким образом:
    pEntry := PHANDLE_TABLE_ENTRY(pHandleTable.TableCode and (not TABLE_CODE_MASK));
    for i := 0 to Pred(MaxHandleCount) do
    begin
     if pEntry <> nil then
      if pEntry.pObject <> nil then inc(EntriesCount);
     pEntry := PHANDLE_TABLE_ENTRY(ULONG_PTR(pEntry) + SizeOf(HANDLE_TABLE_ENTRY));
    end;


    то количество вождений (EntriesCount) совпадет (т.е. у меня совпало :))
    с количеством вызовов EnumHandles_CallBack при таком запросе:
    ExEnumHandleTable(..., EnumHandles_CallBack, ...)
    Так же, каждый pEntry будет совпадать с соответсвующим параметром, передаваемым в нашу CallBack.
    Но на этом наша малина кончается.
    При попытке получить из pEntry.pObject его OBJECT_HEADER, мы получаем все что угодно,
    кроме ожидаемых значений :)
  • Eraser © (10.11.08 03:48) [2]
    > А может что-то вообще другое ? :)

    дык отладчик то что говорит? )
  • Riply © (10.11.08 09:23) [3]
    > [2] Eraser ©   (10.11.08 03:48)
    > дык отладчик то что говорит? )

    Говорят, что существует неплохой способ отладки,
    при помощи двух компьютеров (одни ведущий, другой - ведомый).
    Но я не занаю даже с какой стороны к нему (способу) подходить.
    Или я чего-то не понимаю ?
    P.S.
    Конечно, очень бы хотелось посмотреть, как работает ExEnumHandleTable.
    Допустим, со структурами еще можно разобраться, но она еще должна
    и лочить либо весь HANDLE_TABLE, либо (что врядли) поэлементно.
    А вот с этим проблеммы.
 
Конференция "WinAPI" » Строение "подструктуры" HANDLE_TABLE
Есть новые Нет новых   [134435   +33][b:0][p:0.001]