利用Windows API判断文件共享锁定状态

时间:2010-01-26 12:53:31  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:实依据。同样,在Windows中,文件可以共享模式打开,它也涉及到锁的操作问题。根据Windows中文件共享时加锁范围的大小,锁可分为全局锁和局部锁;全局锁以锁定文件全部内容为特征,而局部锁以锁定文件的局部内容为特征,且文件的锁定区域不可重复。根据Windows中文件共享时锁的操作权限分类,锁可分为:读锁,写锁,读写锁(可读可写,全局锁)。利用上述文件中锁的区域不可...
  正文:

锁是操作系统为实现数据共享而提供的一种安全机制,它使得不同的应用程序,不同的计算机之间可以安全有效地共享和交换数据。要保证安全有效地操作共享数据,必须在相应的操作前判断锁的类型,然后才能确定数据是否可读或可写,从而为开发出健壮的程序提供切实依据。
同样,在Windows中,文件可以共享模式打开,它也涉及到锁的操作问题。根据Windows中文件共享时加锁范围的大小,锁可分为全局锁和局部锁;全局锁以锁定文件全部内容为特征,而局部锁以锁定文件的局部内容为特征,且文件的锁定区域不可重复。根据Windows中文件共享时锁的操作权限分类,锁可分为:读锁,写锁,读写锁(可读可写,全局锁)。
利用上述文件中锁的区域不可重复的特性,我们可尝试给指定文件加一全局锁。若加锁成功,说明指定文件未被其它进程锁定;否则,说明有其它进程锁定了该文件。这里,我们利用两个Windows Api文件操作函数:OpenFile和CreateFile来实现锁定状态的判断。

二、实现方法
1. OpenFile函数使用说明
函数原型:


function OpenFile(const lpFileName: LPCSTR; var lpReOpenBuff: TOFStruct;
uStyle: UINT): HFILE; stdcall;

函数功能:以不同方式打开文件的操作(为兼容16位Windows程序保留的函数)。建议
Windows下使用CreateFile函数。
参数说明:lpFileName: 要打开文件的名称
lpReOpenBuff: 变量指针,用于存储文件被首次打开时接收信息。
UStyle: 打开文件的常量类型。
常量名
意义

Of_Create
创建文件

Of_Delete
删除指定文件

Of_Exist
打开文件以验证其存在否?存在,返回一无效句柄;否则,返回负数

Of_Parse
填充lpReOpenBuff内容,但不进行任何操作

Of_Prompt
如存在不存在,则显示一有重试和取消按钮的消息框

Of_Read
只读方式打开

Of_ReadWrite
读写方式打开

Of_ReOpen
打开lpReOpenBuff内指定的文件,而不依据lpFileName

Of_Search
强迫Windows查找文件---即使指定了文件路径

Of_Share_Compat
文件可由多个程序多次打开

Of_Share_Deny_None
共享打开

Of_Share_Deny_Read
禁止其它程序读该文件

Of_Share_Deny_Write
禁止其它程序写该文件

Of_Share_Exclusive
独占方式打开文件,其它程序不得再打开该文件

Of_Write
只写方式打开

 
返回值:成功,返回值为文件句柄(但可能无效,如:Of_Exist);出错,返回HFile_Error。
2. CreateFile函数使用说明
函数原型:


function CreateFile(lpFileName: PChar;
dwDesiredAccess, dwShareMode: Dword;
lphotoshop/ target=_blank class=infotextkey>psecurityAttributes: PSecurityAttributes;
dwCreationDisposition, dwFlagsAndAttributes: DWORD;
hTemplateFile: THandle): THandle; stdcall;

函数功能:以不同方式打开文件的操作,还可操作管道、邮槽、通信服务、设备以及控
制台等。
参数说明: lpFileName: 要打开文件的名称
dwDesiredAccess:期望存取模式
取值 0:只允许获取一个设备的相关信息。
Generic_Read:只允许读设备
Generic_Write:只允许写设备(二者可组合使用)。
dwShareMode:共享模式。
取值 0: 不共享。
File_Share_Read和/或File_Share_Write:共享读和/或写。
lpSecurityAttributes: 定义文件安全特性的指针(前提:操作系统支持)。
DwCreationDisposition: 打开和创建文件方式。
取值 Create_New: 总创建新文件,如文件已存在,则出错。
Create_Always: 总创建新文件(会覆盖旧文件)。
Open_Existing: 打开已存在的文件,若文件不存在,则出错。
Open_Always: 总打开文件,如不存在,则创建。
dwFlagsAndAttributes: 要打开文件的标志和属性(如:隐藏,系统等)。
一般用File_Attribute_Normal,默认属性。
hTemplateFile::模板文件句柄。
若非0则指定一个文件句柄;否则,新文件将从这个文件复制
扩展属性。
返回值:成功,返回值为文件句柄;出错,返回Invalid_Handle_Value。

3。程序实现

"利用Windows API判断文件共享锁定状态"由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Language/Delphi/12424.html


关键字:

关于《利用Windows API判断文件共享锁定状态》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td