OpenFile

【勇芳软件工作室】汉化HomePreviousNext

OpenFile函数创建,打开,重新打开或删除文件。

此函数用于与16位版本的Windows兼容。特别地,OpenFile函数无法打开命名管道。基于Win32的应用程序应使用CreateFile功能。

HFILE OpenFile(

LPCSTR 【lpFileName】,//指向文件名的指针
LPOFSTRUCT 【lpReOpenBuff】,//指向缓冲区的文件信息
UINT 【uStyle】//动作和属性
); 

参数

【lpFileName】

指向以空字符结尾的字符串,命名要打开的文件。字符串必须包含来自Windows 3.【x】字符集的字符。OpenFile功能不支持Unicode文件名。

【lpReOpenBuff】

指向OFSTRUCT结构的文件,当它首次打开时接收该文件的信息。该结构可用于后续调用OpenFile函数以引用打开的文件。

OFSTRUCT结构包含一个路径名字符串成员,其长度限制为OFS_MAXPATHNAME个字符。OFS_MAXPATHNAME目前被定义为128。因此,您无法使用OpenFile功能打开路径长度超过128个字符的文件。CreateFile功能没有这样的路径长度限制。

【uStyle】

指定要执行的操作。可以使用按位OR运算符组合以下值:

含义
OF_CANCEL忽略。在Win32应用程序编程接口(API)中,OF_PROMPT样式产生一个包含取消按钮的对话框。
OF_CREATE创建一个新文件。如果文件已经存在,它将被截断为零长度。
OF_DELETE删除文件。
OF_EXIST打开文件,然后关闭它。用于测试文件的存在。
OF_PARSE填写OFSTRUCT结构,但不执行其他操作。
OF_PROMPT如果请求的文件不存在,显示一个对话框。该对话框通知用户Windows无法找到该文件,它包含重试和取消按钮。选择取消按钮指示OpenFile返回文件未找到的错误消息。
OF_READ打开文件仅供阅读。
OF_READWRITE打开文件进行阅读和写作。
OF_REOPEN使用重新打开缓冲区中的信息打开文件。
OF_SHARE_COMPAT对于使用Win32 API的基于MS-DOS的文件系统,以兼容模式打开文件,允许指定计算机上的任何进程打开文件多次。使用任何其他共享模式打开的其他努力失败。

Windows NT:此标志映射到CreateFile函数的FILE_SHARE_READ | FILE_SHARE_WRITE标志。

OF_SHARE_DENY_NONE打开文件,而不会拒绝对其他进程的读取或写入访问。在使用Win32 API的基于MS-DOS的文件系统上,如果文件已被任何其他进程的兼容模式打开,则该函数将失败。

Windows NT:此标志映射到CreateFile函数的FILE_SHARE_READ | FILE_SHARE_WRITE标志。

OF_SHARE_DENY_READ打开文件并拒绝对其他进程的读取访问。在使用Win32 API的基于MS-DOS的文件系统上,如果文件已在兼容模式下打开或者被其他进程读取,则该函数将失败。Windows NT:此标志映射到CreateFile函数的FILE_SHARE_WRITE标志。
OF_SHARE_DENY_WRITE打开文件并拒绝对其他进程的写入访问。在使用Win32 API的基于MS-DOS的文件系统上,如果该文件已在兼容模式下打开或被任何其他进程的写入访问,则该函数将失败。

Windows NT:此标志映射到CreateFile函数的FILE_SHARE_READ标志。

OF_SHARE_EXCLUSIVE以独占模式打开文件,拒绝对其他进程的读取和写入访问。如果在任何其他模式下打开文件进行读取或写入访问,即使是当前进程,该函数也会失败。
OF_VERIFY验证文件的日期和时间与以前打开的时间相同。这对于只读文件的额外检查是有用的。
OF_WRITE打开文件仅供写入。

返回值

如果函数成功,返回值指定一个文件句柄。

如果函数失败,返回值为HFILE_ERROR。要获取扩展错误信息,请调用GetLastError.

备注

如果【lpFileName】参数仅指定文件名和扩展名,则此函数按照显示的顺序搜索以下目录中的匹配文件:

1.应用程序加载的目录。

2.当前目录。

3.Windows 95: Windows系统目录。使用GetSystemDirectory函数获取此目录的路径。

Windows NT: 32位Windows系统目录。使用GetSystemDirectory函数获取此目录的路径。该目录的名称是SYSTEM32。

4.Windows NT: 16位Windows系统目录。没有获取此目录的路径的Win32函数,但它被搜索。该目录的名称是SYSTEM。

5.Windows目录。使用GetWindowsDirectory函数获取此目录的路径。

6. PATH环境变量中列出的目录。

【lpFileName】参数不能包含通配符。

Win32 OpenFile功能不支持16位Windows OpenFile功能支持的OF_SEARCH标志。OF_SEARCH标志指示Windows搜索匹配文件,即使文件名包含完整路径。要在基于Win32的应用程序中搜索文件,请使用SearchPath功能。

要在使用后关闭文件,请调用_lclose功能。

也可以看看

CreateFile, GetSystemDirectory, GetWindowsDirectory, _lclose, OFSTRUCT, SearchPath