根据我的理解,如果共享模式设置为0,我将无法再次打开该文件。
默认情况下,我已经将其设置为3,但即使将其设置为2( FILE_SHARE_WRITE
),也会输出相同的错误。
所以这让我认为参数是正确的。
数据:
FileName:
db 'testWriteFile.txt',0
守则:
//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
发布于 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
您推送的值是十六进制数字。你必须附加一个适当的词缀才能得到这些。
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
https://stackoverflow.com/questions/72068402
复制相似问题