C++ “安全”和“安全”有什么区别
_SH_DENYWR拒绝以写入权限打开文件的任何其他尝试(共享冲突) _SH_安全设置安全模式(共享读取、独占写入访问) _SH_SECURE似乎更新了,因为文档似乎会根据您的查看位置对其进行掩饰或省略。网上几乎没有我能找到的信息C++ “安全”和“安全”有什么区别,c++,c,windows,winapi,file-io,C++,C,Windows,Winapi,File Io,_SH_DENYWR拒绝以写入权限打开文件的任何其他尝试(共享冲突) _SH_安全设置安全模式(共享读取、独占写入访问) _SH_SECURE似乎更新了,因为文档似乎会根据您的查看位置对其进行掩饰或省略。网上几乎没有我能找到的信息 这些有什么不同?安全的行为取决于模式参数对\u fsopen()/\u wfspen()请求的访问。如果只请求读取访问,则\u SH\u SECURE映射到文件共享\u read。否则,它将映射到0(独占访问) 对比\u SH\u DENYWR,它总是映射到文件\u共
这些有什么不同?安全
的行为取决于模式参数对\u fsopen()
/\u wfspen()
请求的访问。如果只请求读取访问,则\u SH\u SECURE
映射到文件共享\u read
。否则,它将映射到0
(独占访问)
对比\u SH\u DENYWR
,它总是映射到文件\u共享\u读取
CRT源代码的相关部分(Visual Studio 2010中open.c
的第269-301行)如下所示:
/*
* decode sharing flags
*/
switch ( shflag ) {
case _SH_DENYRW: /* exclusive access */
fileshare = 0L;
break;
case _SH_DENYWR: /* share read access */
fileshare = FILE_SHARE_READ;
break;
case _SH_DENYRD: /* share write access */
fileshare = FILE_SHARE_WRITE;
break;
case _SH_DENYNO: /* share read and write access */
fileshare = FILE_SHARE_READ | FILE_SHARE_WRITE;
break;
case _SH_SECURE: /* share read access only if read-only */
if (fileaccess == GENERIC_READ)
fileshare = FILE_SHARE_READ;
else
fileshare = 0L;
break;
default: /* error, bad shflag */
_doserrno = 0L; /* not an OS error */
*pfh = -1;
_VALIDATE_RETURN_ERRCODE(( "Invalid sharing flag" , 0 ), EINVAL);
}