FILE_NOTIFY_INFORMATION
От: int_main  
Дата: 18.02.09 12:54
Оценка:
Здраствуйте.помогите начинающему:
как вытащить имя файла из стуктура возвращаемой ReadDirectoryChangesW, в каком нибудь распространенном виде, чтобы можно было засунуть в cout или FileCopy/ заранее благодарен
file_notify_information readdirectorychangesw
Re: FILE_NOTIFY_INFORMATION
От: Аноним  
Дата: 18.02.09 14:14
Оценка:
примерно так:
    for(;;)
    {
        if (info->FileNameLength>=sizeof(WCHAR))
        {
            std::wstring path(root_dir);
            path.append(info->FileName, info->FileNameLength/sizeof(WCHAR));
            _listener->OnFSChanged(info->Action, path);
        }

        if (!info->NextEntryOffset) break;
        info = (PFILE_NOTIFY_INFORMATION)(((ULONG_PTR)info)+info->NextEntryOffset);
    }
Re[2]: FILE_NOTIFY_INFORMATION
От: int_main  
Дата: 19.02.09 05:37
Оценка:
Здравствуйте, Аноним, Вы писали:

А> примерно так:

А>
А>    for(;;)
А>    {
А>        if (info->FileNameLength>=sizeof(WCHAR))
А>        {
А>            std::wstring path(root_dir);
А>            path.append(info->FileName, info->FileNameLength/sizeof(WCHAR));
А>            _listener->OnFSChanged(info->Action, path);
А>        }

А>        if (!info->NextEntryOffset) break;
А>        info = (PFILE_NOTIFY_INFORMATION)(((ULONG_PTR)info)+info->NextEntryOffset);
А>    }
А>

Впринципе понятно, незнаю будет ли работать т.к. Dev выдает ошибки при компиляции. Мкажите пожалуйста что такое root_dir, и что _listener... В этих местах компилятор ругается. или если можно прокомментируйте пожалуйста эти строки кода
Re[3]: FILE_NOTIFY_INFORMATION
От: Аноним  
Дата: 19.02.09 11:07
Оценка:
Здравствуйте, int_main, Вы писали:

_>Здравствуйте, Аноним, Вы писали:


А>> примерно так:

А>>
А>>    for(;;)
А>>    {
А>>        if (info->FileNameLength>=sizeof(WCHAR))
А>>        {
А>>            std::wstring path(root_dir);
А>>            path.append(info->FileName, info->FileNameLength/sizeof(WCHAR));
А>>            _listener->OnFSChanged(info->Action, path);
А>>        }

А>>        if (!info->NextEntryOffset) break;
А>>        info = (PFILE_NOTIFY_INFORMATION)(((ULONG_PTR)info)+info->NextEntryOffset);
А>>    }
А>>

_>Впринципе понятно, незнаю будет ли работать т.к. Dev выдает ошибки при компиляции. Мкажите пожалуйста что такое root_dir, и что _listener... В этих местах компилятор ругается. или если можно прокомментируйте пожалуйста эти строки кода

root_dir это корневая директория которая собственно мониторится
а _listener.. это просто интерфейс такой, которому приходят нотификейшны. просто этот кусочек кода взят из реального проекта
Re[4]: FILE_NOTIFY_INFORMATION
От: int_main  
Дата: 19.02.09 11:56
Оценка:
Здравствуйте, Аноним, Вы писали:

А>root_dir это корневая директория которая собственно мониторится

А>а _listener.. это просто интерфейс такой, которому приходят нотификейшны. просто этот кусочек кода взят из реального проекта

а как мне быть с этим интерфесом или может че заменить подскажите, а может как по другому обработать вот кусок моего кода, заранее благодарен:
FILE_NOTIFY_INFORMATION* outBuffer;
DWORD* InfoNotify;
while(ReadDirectoryChangesW(hDir,
outBuffer,
sizeof(FILE_NOTIFY_INFORMATION) + MAX_PATH * 2,
TRUE,
FILE_NOTIFY_CHANGE_CREATION|
FILE_NOTIFY_CHANGE_LAST_WRITE|
FILE_NOTIFY_CHANGE_SIZE|
FILE_NOTIFY_CHANGE_ATTRIBUTES|
FILE_NOTIFY_CHANGE_DIR_NAME|
FILE_NOTIFY_CHANGE_FILE_NAME,
InfoNotify,
NULL,
NULL))
{//вот тут должен по идее быть ваш код
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.