前言
想不起M$的大整形数据结构是什么名字, 也不想去google.
自己模拟了一个BIGINT数据结构, 机智啊^_^
demo
/// 想不起M$大整形是啥了, 自己定义一个
typedef struct _tag_BIGINT {
union {
struct {
DWORD dwLow;
DWORD dwHigh;
};
LONGLONG llVal;
};
_tag_BIGINT() {
llVal = 0;
}
}tag_BIGINT;
tag_BIGINT m_BIFileSizeSrc; ///< 源文件size
tag_BIGINT m_BIFileSizeDst; ///< 目标文件写了多少size
m_BIFileSizeSrc.dwLow = GetFileSize(hSrc, &m_BIFileSizeSrc.dwHigh);
while (!m_bStopThread) {
if (!ReadFile(hSrc, pBuf, dwBufSize, &dwRdBk, NULL) || (0 == dwRdBk)) {
break;
}
dwWasWr = 0;
while (1) {
if (!WriteFile(hDst, pBuf + dwWasWr, dwRdBk, &dwWasWrOnce, NULL)) {
break;
}
dwWasWr += dwWasWrOnce;
m_BIFileSizeDst.llVal += dwWasWrOnce;
dwRdBk -= dwWasWrOnce;
if (dwRdBk <= 0) {
break;
} else {
TRACE(_T("try again, dwWasWrOnce = 0x%X\n"), dwWasWrOnce);
}
}
}