Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.02.17;
Скачать: CL | DM;

Вниз

ReopenFile - как бы пооптимальнее выкрутиться ?   Найти похожие ветки 

 
Riply ©   (2008-01-25 23:33) [0]

Здравствуйте !
Очень нужна эта ф-ия, но остается только смотреть на ее
описание в Help`е и глотать слюнки.
Может кто подскажет как она устроена внутри и
как можно исхитриться, чтобы ее самостоятельно реализовать ?
А то уж очень некузяво и непроизводительно
работать связкой: NtCreate - NtClose - NtCreate.


 
KilkennyCat ©   (2008-01-26 01:33) [1]

Что-то я такой не помню. Или прекрасная Riply опять не в той теме...


 
turbouser ©   (2008-01-26 01:40) [2]


> Riply ©   (25.01.08 23:33)  

В MSDN есть описание.
HANDLE WINAPI ReOpenFile(
 __in          HANDLE hOriginalFile,
 __in          DWORD dwDesiredAccess,
 __in          DWORD dwShareMode,
 __in          DWORD dwFlags
);
.......

И вот еще что:
Requirements
Client
Requires Windows Vista.

Server
Requires Windows Server 2008 or Windows Server 2003.

Header
Declared in WinBase.h; include Windows.h.

Library
Use Kernel32.lib.

DLL
Requires Kernel32.dll.


 
guav ©   (2008-01-26 02:12) [3]

Говорят, что в OBJECT_ATTRIBUTES можно поместить хендл исходного объекта и пустой путь, и передать этот OBJECT_ATTRIBUTES в ZwOpenFile.
http://www.osronline.com/showThread.cfm?link=39205


 
turbouser ©   (2008-01-26 02:20) [4]

Честно говоря, непонятно, почему

> очень некузяво и непроизводительно
> работать связкой: NtCreate - NtClose - NtCreate.

Эта ф-ция всего-навсего Reopens the specified file system object with different access rights, sharing mode, and flags.
Неужели очень часто надо переоткрывать файл с другими правами/флагами?
Зачем?


 
Германн ©   (2008-01-26 02:27) [5]


> turbouser ©   (26.01.08 02:20) [4]
>
> Честно говоря, непонятно, почему

Ты плохо знаешь автора. Для неё это норма. :)
Но её метода может когда-нибудь сработать.


 
Riply ©   (2008-01-26 08:51) [6]

> [1] KilkennyCat © (26.01.08 01:33)
> Что-то я такой не помню. Или прекрасная Riply опять не в той теме...

А невозможно помнить нововведения, тем более доступные отнюдь не везде :)
P.S.
В плане характеристики автора топика, "не смею с Вами спроить" :)

> [2] turbouser © (26.01.08 01:40)
> В MSDN есть описание.

Именно там я на нее и "смотрела, глотая слюнки" :)
Под XP ее не удается вытащить (мне во всяком случае)

> [3] guav © (26.01.08 02:12)
> Говорят, что в OBJECT_ATTRIBUTES можно поместить хендл исходного объекта и пустой путь,
> и передать этот OBJECT_ATTRIBUTES в ZwOpenFile.

Вот спасибо, Саш !
Не скажу сколько времени я над этим ломала голову, потому что стыдно :)
Первые опыты показали, что все работает.
Случаев открытия не того, чего надо пока не наблюдала.
Позже погоняю ее для разных (не очень стандартных) случаев.

> [4] turbouser © (26.01.08 02:20)
> Честно говоря, непонятно, почему
> очень некузяво и непроизводительно
> Неужели очень часто надо переоткрывать файл с другими правами/флагами?
> Зачем?

Допустим, нам надо просканировать диск и,
если объект нас интересует, то что-то с ним сделать.
Открытие объектов при сканировании, например, с повышенным уровнем доступа,
плохо, как минимум, по двум причинам:
1. Гораздо больше времени тратится на само открытие
  (FILE_ANY_ACCESS и FILE_READ_DATA - день и ночь)
2. Перечисляются не все объекты, которые можно было бы получить с более низкими запросами.

> [5] Германн © (26.01.08 02:27)
> Ты плохо знаешь автора. Для неё это норма. :)

А может желание исправить очевидную неуклюжесть кода и должно быть нормой ? :)


 
KilkennyCat ©   (2008-01-26 10:52) [7]

> [6] Riply ©   (26.01.08 08:51)
> > [1] KilkennyCat © (26.01.08 01:33)
> > Что-то я такой не помню. Или прекрасная Riply опять не
> в той теме...
>
> А невозможно помнить нововведения, тем более доступные отнюдь
> не везде :)


я не совсем то хотел сказать. я бы вспомнил ее в разделе WinAPI


 
Riply ©   (2008-01-26 11:27) [8]

> [7] KilkennyCat ©   (26.01.08 10:52)
> я не совсем то хотел сказать. я бы вспомнил ее в разделе WinAPI

Как провести грань ?
Слишком часто, когда я задавала вопросы, они мне казались сложными,
но после первых же ответов, становилось ясно,
что это непонимание(незнание) мною простейших вещей.


 
KilkennyCat ©   (2008-01-26 12:08) [9]

> Riply ©   (26.01.08 11:27)
> Как провести грань ?


тематически.


 
guav ©   (2008-01-26 14:27) [10]

> Не скажу сколько времени я над этим ломала голову, потому
> что стыдно :)

Что стыдно не понимаю.
Я даже не ломал голову, просто зашел в гугл посмотреть что это за ReopenFile и вторая же ссылка - вопрос, аналогичный твоему.



Страницы: 1 вся ветка

Текущий архив: 2008.02.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.024 c
2-1200923194
zeroed
2008-01-21 16:46
2008.02.17
Распарсить строку


2-1201361945
RU-mata
2008-01-26 18:39
2008.02.17
как спрятать свои ресурсы?


2-1201193988
AntonUSAnoV
2008-01-24 19:59
2008.02.17
как записать в событие onkeydown сочетание клавиш


15-1200215446
Dark_Blue
2008-01-13 12:10
2008.02.17
Протестируйте тест


6-1175272306
Adventure
2007-03-30 20:31
2008.02.17
TCPClient через прокси...