ReadDirectoryChangesW() работает с UNC? С сетевыми дисками?

Модератор: Fastman

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
malor
ефрейтор
Сообщения: 57
Зарегистрирован: 2007-07-09 20:20:25

ReadDirectoryChangesW() работает с UNC? С сетевыми дисками?

Непрочитанное сообщение malor » 2011-08-08 12:49:49

В коде функция 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

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Dambo
ефрейтор
Сообщения: 61
Зарегистрирован: 2009-11-27 22:29:58

Re: ReadDirectoryChangesW() работает с UNC? С сетевыми диска

Непрочитанное сообщение Dambo » 2011-08-08 14:22:50

ReadDirectoryChangesW fails with ERROR_INVALID_PARAMETER when the buffer length is greater than 64 KB and the application is monitoring a directory over the network. This is due to a packet size limitation with the underlying file sharing protocols.

Из MSDN.

malor
ефрейтор
Сообщения: 57
Зарегистрирован: 2007-07-09 20:20:25

Re: ReadDirectoryChangesW() работает с UNC? С сетевыми диска

Непрочитанное сообщение malor » 2011-08-08 14:40:15

Но у меня ERROR_INVALID_FUNCTION, а не ERROR_INVALID_PARAMETER.

Dambo
ефрейтор
Сообщения: 61
Зарегистрирован: 2009-11-27 22:29:58

Re: ReadDirectoryChangesW() работает с UNC? С сетевыми диска

Непрочитанное сообщение Dambo » 2011-08-08 14:56:27

Написано же, что через сеть не пашет...

Dambo
ефрейтор
Сообщения: 61
Зарегистрирован: 2009-11-27 22:29:58

Re: ReadDirectoryChangesW() работает с UNC? С сетевыми диска

Непрочитанное сообщение Dambo » 2011-08-08 15:20:22

Если сервер шары ваш, то рекомендую написать свой велосипед.