linuxyf
驱动小牛
驱动小牛
  • 注册日期2007-04-03
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望162点
  • 贡献值0点
  • 好评度161点
  • 原创分1分
  • 专家分0分
阅读:1187回复:0

如果要是在应用层作加密的话,那么READ、WRITE操作应使用非缓存操作的问题

楼主#
更多 发布于:2007-06-29 16:47
如果要是在应用层作加密的话,那么READ、WRITE操作应使用非缓存操作;

我是在应用层加密,非缓存加密写采用如下方式:
HANDLE outFile = CreateFile(saveFileName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_FLAG_NO_BUFFERING | FILE_FLAG_WRITE_THROUGH, NULL);
WriteFile(outFile, data, tmp, &wmWritten, NULL);

但这种方式有问题啊,加上FILE_FLAG_NO_BUFFERING后,每次读写的大小必须是磁盘簇大小的整数倍。簇的大小取决与格式化时传入的参数。默认NTFS的是4*1024字节。所以读写的缓存大小最好是4K的整数倍。

那么当我的写的内容不是4k的整数倍的时候,就需要补足4k的整数倍后写入,这么一来就会多出一些无用的内容。
在孤独和无助中缓慢前行...
游客

返回顶部