在Windows下的文件读写操作,都是调用微软提供的文件读写库函数,使用起来非常方便,然而也有一些固有的缺陷,那就是读写文件的速度非常慢。正巧近期也做一个高速存储的课题,需要在存储1Gbps速率的数据流,开始使用文件存储的方式,优化了很久的代码,都没有达到好的效果,于是开始尝试另一种方式,写硬盘扇区。经过测试和验证,发现写扇区的效率要比写文件要高的多,达到Gb的持续写入速度根本没什么鸭梨,如下是几个关键函数:
1、打开磁盘。
HANDLE CreateFile( LPCTSTR lpszName, DWORD fdwAccess, DWORD fdwShareMode,
LPSECURITY_ATTRIBUTES lpsa, DWORD fdwCreate,
DWORD fdwAttrsAndFlags, HANDLE hTemplateFile )
2、设置文件写入位置
DWORD SetFilePointer(
HANDLE hFile,
LONG lDistanceToMove,
PLONG lpDistanceToMoveHigh,
DWORD dwMoveMethod
)
3、将数据写入
BOOL WriteFile(
HANDLE hFile,
PCVOID lpBuffer,
DWORD nNumberOfBytesToWrite,
PDWORD lpNumberOfBytesWritten,
POVERLAPPED lpOverlapped
)
4、关闭磁盘
BOOL CloseHandle(
HANDLE hObject
)
在我的老古董电脑上进行了运行,基本上可以达到50MB的持续写入速度,在固态硬盘上那是跑的嗖嗖的,1Gb的速率都不是个事。
由于不能上传附件,软件不能上传上来了。有需要的话可以联系[email protected]。