Показать сообщение отдельно
Старый 30.09.2003, 11:07   #10  
SnowMan is offline
SnowMan
Участник
 
57 / 10 (1) +
Регистрация: 15.08.2003
Адрес: Москва
Попробовал присвоить времена одного локльного файла на машине клиента другому. Переписал WinAPI::setFileTimeServer2Client функцию в локальный job... С локальными файлами все работает нормально (см код и рисунок ниже)
X++:
static void Job11(Args _args)
{
    #winAPI
    #define.firstFile('c:\\test1.txt')
    #define.secondFile('c:\\test2.txt')
    #define.offset0(0)
    #define.offset4(4)
    #define.offset8(8)

    int hFile1, hFile2;
    Binary created_1, accessed_1, modified_1;
    Binary created_2  = new Binary(#Offset8);
    Binary accessed_2 = new Binary(#Offset8);
    Binary modified_2 = new Binary(#Offset8);

    ;
    print 'Время первого файла: ', time2str(WinAPI::getFileTimeEx(#firstFile,2),1,1);
    print 'Время второго файла: ', time2str(WinAPI::getFileTimeEx(#secondFile,2),1,1);

    hFile1 = WinAPI::createFile(#firstFile,#OPEN_EXISTING);
    if(hFile1)
    {
        created_1  = WinAPI::getFileTime(hFile1, 0); // createdServer  = WinAPI::getFileTimeServer(serverhFile, 0);
        accessed_1 = WinAPI::getFileTime(hFile1, 1); // accessedServer = WinAPI::getFileTimeServer(serverhFile, 1);
        modified_1 = WinAPI::getFileTime(hFile1, 2); // modifiedServer = WinAPI::getFileTimeServer(serverhFile, 2);

        WinAPI::closeHandle(hFile1);

        if (created_1 && accessed_1 && modified_1)
        {
            created_2.dWord(#offset0, created_1.dWord(#offset0));
            created_2.dWord(#offset4, created_1.dWord(#offset4));
            accessed_2.dWord(#offset0, accessed_1.dWord(#offset0));
            accessed_2.dWord(#offset4, accessed_1.dWord(#offset4));
            modified_2.dWord(#offset0, modified_1.dWord(#offset0));
            modified_2.dWord(#offset4, modified_1.dWord(#offset4));

            hFile2 = WinAPI::createFile(#secondFile, #OPEN_EXISTING, #GENERIC_WRITE);
            if (hFile2)
            {
                print WinAPI::setFileTime(hFile2, created_2, accessed_2, modified_2);
                WinAPI::closeHandle(hFile2);
            }
        }
    }

    print 'Время первого файла: ', time2str(WinAPI::getFileTimeEx(#firstFile,2),1,1);
    print 'Время второго файла: ', time2str(WinAPI::getFileTimeEx(#secondFile,2),1,1);

    pause;
}
Название: img20920-1.png
Просмотров: 714

Размер: 2.3 Кб

Выходит, что функция modifiedServer = WinAPI::getFileTimeServer(serverhFile, 2); возвращает неверное значение

Есть мысли?
__________________
Дмитрий Гришин