C++ “安全”和“安全”有什么区别

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共

_SH_DENYWR拒绝以写入权限打开文件的任何其他尝试(共享冲突) _SH_安全设置安全模式(共享读取、独占写入访问)

_SH_SECURE似乎更新了,因为文档似乎会根据您的查看位置对其进行掩饰或省略。网上几乎没有我能找到的信息


这些有什么不同?

安全
的行为取决于
模式
参数对
\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);
}