Форум: "Потрепаться";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];
Внизкак определить- закончена перекачка файла или нет? Найти похожие ветки
← →
Suntechnic (2002-03-12 18:49) [21]>Юрий Зотов © (12.03.02 16:44)
В Delphi переведёте сами:
Первый проект следит за директорией с:\temp
Код:
DWORD dwWaitStatus;
HANDLE dwChangeHandle;
dwChangeHandle = FindFirstChangeNotification(
"C:\\temp", // directory to watch
FALSE, // do not watch the subtree
FILE_NOTIFY_CHANGE_SIZE);
if (dwChangeHandle == INVALID_HANDLE_VALUE)
ExitProcess(GetLastError());
while (TRUE)
{
// Wait for notification.
dwWaitStatus = WaitForSingleObject( dwChangeHandle, INFINITE);
switch (dwWaitStatus)
{
case WAIT_OBJECT_0:
if ( FindNextChangeNotification( dwChangeHandle) == FALSE )
ExitProcess(GetLastError());
break;
default:
ExitProcess(GetLastError());
}
}
Второй проект манипуляции с файлом:
HANDLE hf = CreateFile("C:\\temp\\bigfile.big", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS, NULL);
SetFilePointer(hf, 1048576, 0, FILE_BEGIN);
SetEndOfFile(hf);// Notification right after this line!!!!! File is still open
CloseHandle(hf);
Как я упоминал ранее мы сначала резервируем место на диске, а копирование будем производить позже. Например сразу после строчкиSetEndOfFile(hf)
мы выполнимSetFilePointer(hf, 0, 0, FILE_BEGIN);
И начнём писать с помощью WriteFile. В итоге: событие получено, файл реально на диск не записан.
Переведите в Delphi расставьте breakpoint-ы и сами посмотрите, что за чем происходит.
Страницы: 1 2 вся ветка
Форум: "Потрепаться";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.012 c