Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.08.2011, 13:58   #1
malor
Форумчанин
 
Регистрация: 23.05.2007
Сообщений: 151
Вопрос ReadDirectoryChangesW() работает с UNC-путями? Либо с сетевыми дисками?

В коде функция ReadDirectoryChangesW() возвращает ноль:
Код:
#define pathDir                "Z:\\"

DWORD WINAPI ThreadFunc(LPVOID lpParam)
{
    HANDLE hDir = CreateFile(_T(pathDir),                        // pointer to the file name
                            FILE_LIST_DIRECTORY,                // access (read/write) mode
                            FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,  // share mode
                            NULL,                               // security descriptor
                            OPEN_EXISTING,                      // how to create
                            FILE_FLAG_BACKUP_SEMANTICS,         // file attributes    (FILE_FLAG_OVERLAPPED)
                            NULL);                              // file with attributes to copy
                            
  
    const DWORD dwNotificationFlags = FILE_NOTIFY_CHANGE_LAST_WRITE | FILE_NOTIFY_CHANGE_FILE_NAME;
    FILE_NOTIFY_INFORMATION Buffer[1024];
    DWORD BytesReturned;
    VOID *pBuf = (BYTE*)&Buffer;    

    while (ReadDirectoryChangesW(hDir,                     // handle to directory
                                 &Buffer,                  // read results buffer
                                 sizeof(Buffer),           // length of buffer
                                 TRUE,                     // monitoring option
                                 dwNotificationFlags,
                                 &BytesReturned,           // bytes returned
                                 NULL,                     // overlapped buffer
                                 NULL))                       // completion routine
                                 
    {
        FILE_NOTIFY_INFORMATION* pInfo = (FILE_NOTIFY_INFORMATION*) pBuf;
        SelectAction(pInfo);

    }
    dwError = GetLastError();    
    CloseHandle(hDir);
    return 0;
}
GetLastError() выдает, что код ошибки
ERROR_INVALID_FUNCTION Incorrect function.

На MSDN ReadDirectoryChangesW Function есть такое:
Цитата:
Return Value
If the function fails, the return value is zero. To get extended error information, call GetLastError.

If the network redirector or the target file system does not support this operation, the function fails with ERROR_INVALID_FUNCTION.
В посте Нужен алгоритм пишут:
Цитата:
"Я проверял только на сетевом диске с NTFS. Там ReadDirectoryChangesW работал."
Как заставить работать ReadDirectoryChangesW()?

VS 2008
malor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ReadDirectoryChangesW + NetFileEnum/NetSessionEnum zdovim Общие вопросы C/C++ 6 08.12.2010 12:54
Надо написать программу блокировки клавиатуры на 15 секунд, либо в масме либо в эмуляторе Vikctor Помощь студентам 0 28.11.2010 17:26
TThread выполняет что-либо пока работает запущенная им программа Человек_Борща Общие вопросы Delphi 7 25.11.2010 13:23
надо написать тест по литеретатуре либо в делфи либо в паскале demon-34 Помощь студентам 1 21.11.2010 22:39
Открытие необходимой группы в локальной сети (UNC) nixstill Работа с сетью в Delphi 0 15.01.2009 13:56