[原]CreateFile中的dwShareMode

本文解析了Windows API函数CreateFile中的两个关键参数dwDesiredAccess和dwShareMode的区别与作用。dwDesiredAccess定义了当前调用请求的访问权限类型,如只读、只写或可读写等;而dwShareMode则指定了后续CreateFile调用可以获取的访问权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一直对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_READFILE_SHARE_WRITE
FILE_SHARE DELETE当对文件进行操作的时候,我们不关心文件是否呗逻辑删除或是被移动。在Windows内部,系统会先将文件标记为待删除,然后当该文件所有已打开的句柄都被关闭的时候,再将其真正的删除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值