![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Sheff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 503 Регистрация: 25.3.2002 Где: Зеленоград Репутация: нет Всего: 3 |
Народ, а как установить связь между HANDLE'ом на файл, открытым с помощью CreateFile и указателем на файловый поток FILE*
Т.е грубо говорят, как переконвертировать HANDLE в FILE* и наоборот ? -------------------- -------------------------- Шеф всегда прав :) |
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 8 Всего: 18 |
Напиши письмо в майкрософт и спроси, как в ядре обернут CreateFile для конвертации дескриптора файла в объект FILE*. Или декомпилируй файл msvcrt.dll - и посмотри как там реализована ф-ция fopen.
Добавлено @ 23:47 А вообще, можно открыть файл и найти в структурах ядра дескриптор этого файла, но это если для извращенцев. |
|||
|
||||
| Sheff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 503 Регистрация: 25.3.2002 Где: Зеленоград Репутация: нет Всего: 3 |
Fixin, вообще да, похоже стандартного способа не существует, вроде вот это работает для обычных файлов:
Для пайпов не пробовал, но всё-равно это хак -------------------- -------------------------- Шеф всегда прав :) |
|||
|
||||
| NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 6 Всего: 23 |
Sheff, уже не первый топик с данной тематикой. Зачем тебе это?
|
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 7 Всего: 146 |
handle = fileno(stream);
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Sheff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 503 Регистрация: 25.3.2002 Где: Зеленоград Репутация: нет Всего: 3 |
NiJazz, нужно
Решение нашёл: функция _open_osfhandle. Romikgy, это не хэндл это номер файла -------------------- -------------------------- Шеф всегда прав :) |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 7 Всего: 146 |
Sheff, а хендл это что?
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Sheff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 503 Регистрация: 25.3.2002 Где: Зеленоград Репутация: нет Всего: 3 |
Romikgy, грубо говоря указатель на объект ядра, в моём случае это файл
-------------------- -------------------------- Шеф всегда прав :) |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 7 Всего: 146 |
очень грубо! имхо тогда лучше _get_osfhandle -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Sheff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 503 Регистрация: 25.3.2002 Где: Зеленоград Репутация: нет Всего: 3 |
Romikgy, почему очень грубо.
HANDLE это void* - т.е указатель, но по нему нельзя обратиться и нельзя разименовать. Видимо винда использует его по-своему, может это какой-нибудь адрес в таблице дескрипторов или ещё что-нибудь, не важно, но это явно не _iobuf::_file. Кстати, где можно прочитать про то что такое HANDLE в действительности ? Интересно стало -------------------- -------------------------- Шеф всегда прав :) |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
Sheff, тут в общих чертах описано
|
|||
|
||||
| Sheff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 503 Регистрация: 25.3.2002 Где: Зеленоград Репутация: нет Всего: 3 |
dumb, спасибо, почитал. Интересно.
Жаль что на сайте у sysinternals нет исходника WinObj, очень хотелось бы глянуть -------------------- -------------------------- Шеф всегда прав :) |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |