Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] нет, так не работает, но нашел другой способ 30.05.02 23:22 Число просмотров: 1133
Автор: vim Статус: Незарегистрированный пользователь
|
> > > > > > > > > > > >
> > > > > > NTSYSAPI
> > > > > > NTSTATUS
> > > > > > NTAPI
> > > > > > ZwQueryInformationFile(
> > > > > > IN HANDLE FileHandle,
> > > > > > OUT PIO_STATUS_BLOCK
> > IoStatusBlock,
> > > > > > OUT PVOID FileInformation,
> > > > > > IN ULONG Length,
> > > > > > IN FILE_INFORMATION_CLASS
> > > > FileInformationClass
> > > > > > );
> > > > > > ---
> > > > > > > > > > Не, это я знаю. Не подходит. Для этой > > функции > > > нужен > > > > > FileHandle, т.е. файл предварительно > должен > > быть > > > > открыт. А > > > > > мне наоборот, по имени файла нужно > решить > > > разрешать ли > > > > его > > > > > открывать или нет. > > > > > > > > > > Исходные данные - это строка текста с > именем > > > файла. > > > > > Из-за того, что у файла может быть два > имени > > - > > > длинное > > > > и > > > > > короткое, их оба нужно проверить. В > этом вся > > > проблема. > > > > Voobche to > GetShortFielNAme()/GetLongFileNAme() > > > otkryvet > > > > file, queryinfo, zakryvaet file, tak chto > drugogo > > puti > > > net > > > > > > > > FILEMONITOR TRACE dlia: > > > > > > > > char sz[200];
> > > > ::GetShortPathName("c:\\Program Files",sz,
> 200);
> > > > ---
> > > > > > > > 10:25:20 AM temp.exe:245
> IRP_MJ_CREATE
> > > C:\Program
> > > > Files SUCCESS Attributes: Any Options:
> Open
> > > > 10:25:20 AM temp.exe:245
> > > IRP_MJ_QUERY_INFORMATION
> > > > C:\Program Files SUCCESS
> > > > FileAlternateNameInformation
> > > > 10:25:20 AM temp.exe:245
> IRP_MJ_CLEANUP
> > > C:\Program
> > > > Files SUCCESS
> > > > 10:25:20 AM temp.exe:245
> IRP_MJ_CLOSE
> > > C:\Program
> > > > Files SUCCESS
> > > > ---
> > > > > > Да, в принципе так она и должна работать. > > > Но проблема в том что это делается в user mode, а > не в > > > kernel. > > > > Voobche to vsia rabota s filami delaetsia v kernel > mode! > > (ring0) > > > > I kogda ta function vyzyvaetsia proishodit > perekluchenie v > > ring0 dlia kazdoi API raboty s failomi i tam > vyzyvaetsi to > > chto nado , v dannom sluchae open file, query info, > close. > > > > P.S. Tak chto sozdai svoi functions > > GetShortfileName()/GetLongfileAme() i vnutri ih > otkryvai > > file query info i t.d... > > Точно, я что-то сразу не въехал :-(( > Ок, попробую, спасибо ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Попробовал, не работает
ZwQueryInformationFile() возвращает точно такое же имя файла, которое ты задал при его открытии по ZwCreateFile().
Нашел другую функцию, которая вроде бы должна возвращать оба имени -
Zw(Nt)QueryDirectoryFile() с параметром FileBothDirectoryInformation.
Только работы много получается: придется самому разбивать имя файла на составляющие поддиректории и каждую из них открывать и сканировать на поиск нужного элемента.
vim
|
|
|