首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >理解ERROR_SHARING_VIOLATION在x86中的应用

理解ERROR_SHARING_VIOLATION在x86中的应用
EN

Stack Overflow用户
提问于 2022-04-30 12:09:25
回答 1查看 37关注 0票数 1

根据我的理解,如果共享模式设置为0,我将无法再次打开该文件。

默认情况下,我已经将其设置为3,但即使将其设置为2( FILE_SHARE_WRITE ),也会输出相同的错误。

所以这让我认为参数是正确的。

数据:

代码语言:javascript
运行
复制
FileName:
 db 'testWriteFile.txt',0

守则:

代码语言:javascript
运行
复制
    //create file
    push 0 // hTemplateFile null
    push 80 //dwFlagsAndAttributes 'FILE_ATTRIBUTE_NORMAL'
    push 4  // dwCreationDisposition OPEN_ALWAYS
    push 0 // lpSecurityAttributes null
    push 3 // dwShareMode FILE_SHARE_READ | FILE_SHARE_WRITE -> allow other programs to read and write
    push C // dwDesiredAccess GENERIC_WRITE
    push FileName //lpFileName
    call CreateFileA

    call GetLastError

可能是什么原因?

编辑: CreateFIleA参考https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilea

EN

回答 1

Stack Overflow用户

发布于 2022-05-01 18:29:36

push 0 // hTemplateFile空push 80 //dwFlagsAndAttributes 'FILE_ATTRIBUTE_NORMAL‘push 4 // dwCreationDisposition OPEN_ALWAYS push 0 // lpSecurityAttributes空push 3 // dwShareMode FILE_SHARE_READ FILE_SHARE_READ FILE_SHARE_WRITE ->允许其他程序读写push C // dwDesiredAccess GENERIC_WRITE push FileName //lpFileName call CreateFileA

您推送的值是十六进制数字。你必须附加一个适当的词缀才能得到这些。

  • FILE_ATTRIBUTE_NORMAL常数为00000080h,
  • 为00000004h,
  • FILE_SHARE_READ和FILE_SHARE_WRITE常数分别为00000001h和00000002h。因此,要同时设置00000003h.
  • The、GENERIC_READ和GENERIC_WRITE常量,则分别为80万h和40000000 h。因此,要将两者都设置为使用0C0000000h.

代码语言:javascript
运行
复制
    push 0          // hTemplateFile null
    push 80h        // dwFlagsAndAttributes FILE_ATTRIBUTE_NORMAL
    push 4          // dwCreationDisposition OPEN_ALWAYS
    push 0          // lpSecurityAttributes null
    push 3          // dwShareMode FILE_SHARE_READ | FILE_SHARE_WRITE
    push 0C0000000h // dwDesiredAccess GENERIC_READ | GENERIC_WRITE
    push FileName   // lpFileName
    call CreateFileA
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72068402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档