利用 CreateFileMapping + MapViewOfFile 將大文件映射為內存視圖,分塊拷貝至新建文件映射,避免一次性讀入內存。塊大小建議 ≤ 1GB。
CreateFile 打開源文件,GetFileSizeEx 獲取 64 位大小。CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, 0, NULL) 創建只讀映射。MapViewOfFile(hFileMap, FILE_MAP_READ, 0, offset, blockSize) 映射當前塊。CreateFileMapping(hNewFile, NULL, PAGE_READWRITE, 0, blockSize, NULL)。MapViewOfFile(hNewMap, FILE_MAP_WRITE, 0, 0, 0) 獲取寫指針,CopyMemory 複製。UnmapViewOfFile 雙向解映射,關閉句柄,遞增 Offset。LARGE_INTEGER / LONGLONG 支援 >4GB 文件。dwAllocationGranularity 對齊映射位移(雖代碼未顯式對齊,但 MapViewOfFile 要求對齊)。if (fileSize < blockSize) blockSize = fileSize;。實測 10GB+ SQL 文件分割成功,適合大數據文件預處理。