Форум программистов CodeGuru
24 Февраль 2018, 17:37:02 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: ReadDirectoryChangesW() работает с UNC-путями? Либо с сетевыми дисками?  (Прочитано 19121 раз)
0 Пользователей и 1 Гость смотрят эту тему.
malor
Интересующийся
**
Офлайн Офлайн

Сообщений: 21


Просмотр профиля
« : 08 Август 2011, 13:57:14 »

В коде функция 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
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!