16,466
社区成员
发帖
与我相关
我的任务
分享
if (HoutFile != INVALID_HANDLE_VALUE)
{
LARGE_INTEGER llFileSize;
if (GetFileSizeEx(HinFile, &llFileSize))
{
size_t ulBytesToRead = 1 * 1024 * 1024;
HANDLE hHeap = GetProcessHeap();
LARGE_INTEGER llReadPos = { 0 };
while (llReadPos.QuadPart < llFileSize.QuadPart && Handling == TRUE)
{
BOOL bResult;
DWORD dwBytesRead = 0;
DWORD dwBytesWritten = 0;
LONGLONG llBytesRest = llFileSize.QuadPart - llReadPos.QuadPart;
if (llBytesRest < (LONGLONG)ulBytesToRead)
{
ulBytesToRead = (size_t)llBytesRest;
}
BYTE *lpBytes = (BYTE *)HeapAlloc(hHeap, HEAP_ZERO_MEMORY, ulBytesToRead);
if (lpBytes == NULL)
{
SetFilePointer(HoutFile, 0, NULL, FILE_BEGIN);
SetEndOfFile(HoutFile);
break;
}
bResult = ReadFile(HinFile, lpBytes, ulBytesToRead, &dwBytesRead, NULL);
if (!bResult || (dwBytesRead < ulBytesToRead))
{
HeapFree(hHeap, 0, lpBytes);
SetFilePointer(HoutFile, 0, NULL, FILE_BEGIN);
SetEndOfFile(HoutFile);
break;
}
//就是这个for
for (unsigned int i = 0; i <= dwBytesRead; i++)
{
lpBytes[i] ^= 1;
lpBytes[i] ^= 2;
}
bResult = WriteFile(HoutFile, lpBytes, dwBytesRead, &dwBytesWritten, NULL);
if (!bResult || (dwBytesWritten < dwBytesRead))
{
HeapFree(hHeap, 0, lpBytes);
SetFilePointer(HoutFile, 0, NULL, FILE_BEGIN);
SetEndOfFile(HoutFile);
break;
}
llReadPos.QuadPart += dwBytesRead;
HeapFree(hHeap, 0, lpBytes);
}