[原]CreateFile中的dwShareMode

一直对CreateFile的参数dwDesiredAccessdwShareMode有什么不同不是很清楚,今天重读 windows核心编程的时候终于豁然开朗了。 真是书读百遍,其义自见。
简要总结如下:

  • dwDesiredAccess表示本次CreateFile想要获取的权限: 只读(GENERIC_READ),只写(GENERIC_WRITE),可读写(GENERIC_READ | GENERIC_WRITE)。
  • dwShareMode表示后续CreateFile可以取得什么权限。

dwShareMode取的各种值及含义抄录如下(摘自 Windows核心编程第5版 第10章 p293):

含义
0 要求独占对设备的访问。 如果设备己经打开,CreateFile调用会失败。如果我们成功地打开了设备,那么后续的CreateFUe调用会失败
FILE_SHARE_READ 如果有其他内核对象要使用该设备,我们要求它们不得修改设备的数据。 如果设备已经以写入方式或独占方式打开,那么我们的CreateFile会失败。 如果我们成功地打开了设备,那么后续的使用了 GENERIC_WRITE访问标志的CreateFile调用会失败
FILE_SHARE_WRITE 如果有其他内核对象要使用该设备,我们要求它们不得读取设备的数据。 如果设备已经以读取方式或独占方式打开,那么我们的CreateFUe调用会失败。 如果我们成功地打开了设备,那么后续的使用了GENERIC_READ访问标志的CreateFile调用会失畋
FILE_SHARE_READ FILE_SHARE_WRITE
FILE_SHARE DELETE 当对文件进行操作的时候,我们不关心文件是否呗逻辑删除或是被移动。在Windows内部,系统会先将文件标记为待删除,然后当该文件所有已打开的句柄都被关闭的时候,再将其真正的删除
posted @ 2017-04-27 11:33  BCN  阅读(2150)  评论(0编辑  收藏  举报