jjzjj

LockFileEx

全部标签

c++ - 在 Windows 中使用 LockFileEx API 锁定整个文件

可以使用LockFileEx锁定特定偏移量Windows中使用C++的API,我尝试了这个并获得了成功的结果。但我试图使用LockFileEx锁定整个文件,我没有做到。我没有在网站上找到任何如何使用LockfileEX进行完整文件锁定的文档。ifile=CreateFile(argv[1],GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_ALWAYS,0,NULL);if(ifile==INVALID_HANDLE_VALUE){printf("CreateFilefailed(%d)\n",GetLastError());return1;}OVERLAP

windows - lockfileex 不会阻止 create_always 删除文件

在一个过程中,我用GENERIC_READ调用了createfile|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE、OPEN_ALWAYS和FILE_ATTRIBUTE_NORMAL作为参数。然后我在整个文件上调用了LockFileEx。我获得了一个独占锁,并锁定了从0到UINT_MAX的范围。之后,在另一个进程中,我调用了::CreateFileW(path.c_str(),perms,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NU

c++ - 调用 LockFileEx() 时访问冲突

我有一个FileMapping类,它允许我通过使用Win32API函数锁定一个文件供我的进程独占使用LockFileEx().boolFileMapping::lockFile(boolwait){if(isFileLocked())returntrue;//Wewantanexclusivelock.DWORDflags=LOCKFILE_EXCLUSIVE_LOCK;//Ifwedon'twantthethreadtoblock,wehavetosettheappropriateflag.if(!wait)flags|=LOCKFILE_FAIL_IMMEDIATELY;m_isF

c++ - LockFileEx 读写升级/降级

我需要打开一个文件,对其进行读取锁定,然后尝试获取写入锁定,但如果失败则保留读取锁定。这在使用fcntl锁定的POSIX中效果很好。在Windows中,我可以使用LockFileEx来获取文件锁。我可以获得读写锁(共享和独占)。但是,在Windows中,我似乎必须先取独占写锁,然后再加上读锁。这与我在POSIX上所做的顺序相反,它会给我的抽象层带来问题。当我在POSIX中按该顺序执行此操作时,我通过获取读锁失去了写锁,因为fcntl替换了现有锁而不是像Windows那样添加锁。我可以用#ifdefs破解它以更改调用站点的锁定顺序,但我正在寻找好的想法来修复我的抽象代码。//Thisis