Форум программистов, компьютерный форум CyberForum.ru

Таблицы с дескрипторами - C++

Восстановить пароль Регистрация
 
kolobok919
-4 / 2 / 1
Регистрация: 30.05.2015
Сообщений: 37
29.06.2015, 07:09     Таблицы с дескрипторами #1
Доброе утро. Интересует следующий вопрос. При использовании ряда функций WinAPI возвращается дескриптор - число, идентифицирующее объект ядра. Каждому такому числу, по всей видимости, соответствует некоторая структура данных. Каким образом операционная система Windows связывает целые числа и эти структуры данных? Используется хеш-таблица, связные списки или что-то другое?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Убежденный
Системный программист
 Аватар для Убежденный
14216 / 6231 / 988
Регистрация: 02.05.2013
Сообщений: 10,390
Завершенные тесты: 1
29.06.2015, 08:30     Таблицы с дескрипторами #2
Это undocumented и может меняться в Windows от версии к версии.
Но если верить исходникам W2K/WRK, хэндлы организуются в структуру,
похожую на связные списки, а биты в значении HANDLE используются для
быстрой навигации по этим спискам (во время операций поиска и удаления).
Enno
265 / 168 / 38
Регистрация: 25.08.2014
Сообщений: 1,088
Записей в блоге: 1
29.06.2015, 08:31     Таблицы с дескрипторами #3
Объекты ядра может и числа, а user-объекты в vs2005 определяются как указатели на структуры с одним полем int.
Если интересно, у Фень Юаня в книжке есть подробное описание где хранятся и что значат разные биты в user-объектах (окна, GDI-объекты и т.п.)
Убежденный
Системный программист
 Аватар для Убежденный
14216 / 6231 / 988
Регистрация: 02.05.2013
Сообщений: 10,390
Завершенные тесты: 1
29.06.2015, 09:12     Таблицы с дескрипторами #4
Цитата Сообщение от Enno Посмотреть сообщение
user-объекты в vs2005 определяются как указатели на структуры с одним полем int
Определение может быть любым, пока оно на совместимо двоичном уровне.
Например, хэндл может быть определен так:
C
1
typedef struct { int Unused; } _HANDLE; typedef _HANDLE * HANDLE;
или так:
C
1
typedef PVOID HANDLE;
Сути это не меняет.
Yandex
Объявления
29.06.2015, 09:12     Таблицы с дескрипторами
Ответ Создать тему
Опции темы

Текущее время: 20:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru