1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#include "ProgressiveProcessor.h"
ProgressiveProcessor::ProgressiveProcessor()
{
tempFile[0]=0;
writeCursor=INVALID_HANDLE_VALUE;
wchar_t tempPath[MAX_PATH-14] = {0};
GetTempPath(MAX_PATH-14, tempPath);
GetTempFileName(tempPath, L"wfv", 0, tempFile);
writeCursor=CreateFile(tempFile, GENERIC_WRITE, FILE_SHARE_WRITE|FILE_SHARE_READ, 0, CREATE_ALWAYS, 0, 0);
processedCursor=CreateFile(tempFile, GENERIC_READ, FILE_SHARE_WRITE|FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
readCursor=CreateFile(tempFile, GENERIC_READ, FILE_SHARE_WRITE|FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
}
ProgressiveProcessor::~ProgressiveProcessor()
{
if (writeCursor != INVALID_HANDLE_VALUE)
CloseHandle(writeCursor);
if (tempFile[0])
DeleteFile(tempFile);
}
int ProgressiveProcessor::Write(void *data, size_t datalen, size_t *written)
{
DWORD dw_written=0;
WriteFile(writeCursor, data, (DWORD)datalen, &dw_written, NULL);
*written=dw_written;
writePosition+=dw_written;
return 0;
}
|