Попробовал присвоить времена одного локльного файла на машине клиента другому. Переписал 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;
}
Выходит, что функция
modifiedServer = WinAPI::getFileTimeServer(serverhFile, 2); возвращает неверное значение
Есть мысли?