如何做文件保护 ( 积分: 100 )

  • 主题发起人 主题发起人 perfect2005
  • 开始时间 开始时间
P

perfect2005

Unregistered / Unconfirmed
GUEST, unregistred user!
程序要对某文件夹下约几十个文本型文件做读写,读写较频繁,最初想用临界区或者缓冲区将这些全部文件保护起来,可是发现这样非常影响效率,有没有办法单独的对其中每一个文件做保护,这个文件的读写保护不会影响其他的文件呢?
请大侠帮助,谢~!
 
给文件加锁
函数LockFileEx或者LockFile():

LockFileEx比函数LockFile多了两个功能,一、它在锁定文件的某个区域时,可以设定属性以使其它进程可以读该锁定区域,二、可以告诉LockFileEx直接锁定文件成功后返回。第二个功能比起LockFile要好多了,因为当调用LockFile时,如果想锁定的文件区域已经被另一个线程锁定了,那么LockFile会立即返回,但是你可以告诉LockFileEx一直等到获得文件为止才返回。下面列出函数LockFileEx的定义,

BOOL LockFileEx(HANDLE hFile,DWORD dwFlags,

DWORD dwReserved,DWORD nNumberOfBytesToLockLow,

DWORD nNumberOfBytesToLockHigh,

LPOVERLAPPED lpOverLapped);

LockFileEx使用OVERLAPPED结构中的成员Offset和OffsetHigh。

下面列出结构OVERLAPPED的定义:

typedef struct _OVERLAPPED{

DWORD Internal;

DWORD InternalHigh;

DWORD Offset;

DWORD OffsetHigh;

HANDLE hEvent; //事件内核对象

}OVERLAPPED,*LPOVERLAPPED;
 
帮你顶一下
 
smsman的方法不错
是微软件提供的方法
应该比较好用
 
多人接受答案了。
 
后退
顶部