РУЧКА - Структуры файловых дескрипторов и дескрипторов каталогов - PullRequest
2 голосов
/ 30 мая 2011

Язык: C
ОС: Windows

Мое приложение оснащено apis уровня nt и должно манипулировать дескрипторами файлов и каталогов. В файле Zwopenfile или zwcreate я получаю HANDLE в результате. Обычно значения для HANDLE такие, как 0x00000024, 28,2c ... и т. Д. Когда я приведу его как LPBYTE, чтобы просмотреть содержимое. Visual studio показывает «Выражение не может быть оценено». Я понял из того, что HANDLE, возвращаемый из apis файла создания / открытия, не является указателем на область памяти. Тем не менее, Windows использует значение и выполнение файловых операций. Ntquerydirectory объект предоставляет мне информацию о ручках. Однако, как окна реализовали эту функцию, неизвестно. Может ли кто-нибудь пролить свет на это.

Ответы [ 4 ]

4 голосов
/ 30 мая 2011

Это так называемое «непрозрачное значение», которое означает, что «это полностью зависит от Windows, как это делается внутри. Например, это может быть индекс в некоторой глобальной таблице, которая недоступна непосредственно вашей программе - Windows просто знает, как туда добраться, и ты даже не должен думать об этом.

2 голосов
/ 30 мая 2011

Дескрипторы хранятся в таблице, доступной только из кода ядра.Если вас интересует, как работает ядро ​​Windows, вам может быть интересно Марк Руссинович, блог или Разработка драйверов , интересно.

0 голосов
/ 30 мая 2011

HANDLE - фактически указатель на структуру, которая содержит различные поля, часто они указывают на какой-либо объект ядра.РУЧКИ обычно используются при программировании на С, чтобы иметь представление об объектно-ориентированном программировании.

При отладке с помощью WinDbg у вас есть расширение, называемое! Handle, которое может отображать различную информацию о данном дескрипторе.

Книга Windows Internals (Марка Руссиновича) подробно описывает эту и многие другие.другие механизмы Windows.

Возможно, вы найдете это обсуждение полезным: Что такое дескриптор Windows?

Также ознакомьтесь с этой записью в блоге Марка: http://blogs.technet.com/b/markrussinovich/archive/2009/09/29/3283844.aspx. Содержит много информации, которая может помочь вам ответить на ваш вопрос.

0 голосов
/ 30 мая 2011

Последняя книга, которую я знаю об этом, была хорошим справочником для такого рода вещей, была Внутри Windows 2000 Марка Е. Руссиновича и Дэвида А. Соломона.Хотя эта книга явно устарела, большая часть этой книги все еще актуальна.Google для «Inside Windows 7» для ссылок на видео с выступлениями Руссиновича и некоторых других книг, за которые я не могу поручиться, но которые появляются по теме.

...