我快疯了,难道API也有bug?
我是在处理巨型位图(4096*4096)时发现这个问题的。
请看:
BOOL bRet = FALSE ;
BYTE * pBmfh = NULL ;
HANDLE hMap = NULL ;
HANDLE hFile = INVALID_HANDLE_VALUE ;
__try
{
hFile = ::CreateFile (_T("c:\\Test.foo"), GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ, NULL, CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN,
NULL) ;
if (hFile == INVALID_HANDLE_VALUE)
__leave ;
hMap = ::CreateFileMapping (hFile, NULL, PAGE_READWRITE,
0, 1024 * 1024 * 100, NULL) ;
if (hMap == NULL)
__leave ;
pBmfh = (BYTE *) ::MapViewOfFile (hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0) ;
if (pBmfh == NULL)
__leave ;
bRet = TRUE ;
}
__finally
{
if (pBmfh != NULL) ::UnmapViewOfFile (pBmfh) ;
if (hMap != NULL) ::CloseHandle (hMap) ;
::SetFilePointer (hFile, 1024 * 1024 * 80, NULL, FILE_BEGIN) ;
::SetEndOfFile (hFile) ; ~~~~~~~~~~~~~~~~问题
if (hFile != INVALID_HANDLE_VALUE) ::CloseHandle (hFile) ;
}
但文件大小不是80M而是100M(我的OS为win2000-SP2)
而在98就没这个问题,为什么????