发信人: winsy(鹰派)
整理人: winsy(2003-03-15 10:41:49), 站内信件
|
hwrite
VB声明
Declare Function hwrite Lib "kernel32" Alias "_hwrite" (ByVal hFile As Long, ByVal lpBuffer As String, ByVal lBytes As Long) As Long
说明
参考lwrite函数
注解
这个函数在win16中用于写入大于64KB的数据块。但win32的文件I/O函数并不受这个64KB的限制
lclose
VB声明
Declare Function lclose Lib "kernel32" Alias "_lclose" (ByVal hFile As Long) As Long
说明
关闭指定的文件,请参考CloseHandle函数,了解进一步的情况
lcreat
VB声明
Declare Function lcreat Lib "kernel32" Alias "_lcreat" (ByVal lpPathName As String, ByVal iAttribute As Long) As Long
说明
创建一个文件。如文件已经存在,就会将其缩短成零长度,并将其打开,以便读写
返回值
Long,如执行成功,返回打开文件的句柄。如果出错,则返回HFILE_ERROR.
参数表
参数 类型及说明
lpPathName String,欲创建的文件的名字
iAttribute Long,下述值之一
0——文件能够读写
1——创建只读文件
2——创建隐藏文件
3——创建系统文件
注解
该函数会打开已由其他应用程序打开的文件,所以使用它时要小心。win32的CreateFile函数已取代了这个函数。这个函数与vb的open语句作用相同
llseek
VB声明
Declare Function llseek Lib "kernel32" Alias "_llseek" (ByVal hFile As Long, ByVal lOffset As Long, ByVal iOrigin As Long) As Long
说明
设置文件中进行读写的当前位置。该函数与vb的seek语句类似。如果用vb的open命令打开了一个文件,那么不要再对这个文件使用llseek函数
返回值
Long,返回一个新位置,设置成从文件起始处算起的一个偏移量。HFILE_ERROR表示函数执行出错。会设置GetLastError
参数表
参数 类型及说明
hFile Long,系统文件句柄
lOffset Long,字节偏移量
iOrigin Long,下述常数之一
FILE_BEGIN lOffset将新位置指定成从文件起始处的一个偏移距离
FILE_CURRENT lOffset将新位置指定成从当前位置开始的一个偏移距离
FILE_END lOffset将新位置指定成从文件结尾开始的的一个偏移距离
注解
参考SetFilePointer函数,认识能对较大文件进行处理的一个近似函数.
LockFile
VB声明
Declare Function LockFile Lib "kernel32" Alias "LockFile" (ByVal hFile As Long, ByVal dwFileOffsetLow As Long, ByVal dwFileOffsetHigh As Long, ByVal nNumberOfBytesToLockLow As Long, ByVal nNumberOfBytesToLockHigh As Long) As Long
说明
在windows中,文件可用共享模式打开——在这种情况下,多个进程可同时访问该文件。利用这个函数,要对文件进行读写的一个应用程序可将文件的某一部分锁定起来,使其不能由其他应用程序访问。这样便避免了同时读写时发生的冲突
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hFile Long,欲锁定文件的句柄
dwFileOffsetLow Long,指定欲锁定区域起始处的低32位地址
dwFileOffsetHigh Long,指定欲锁定区域起始处的高32位地址
nNumberOfBytesToLockLow Long,锁定区域包含字符数量的低32位值
nNumberOfBytesToLockHigh Long,锁定区域包含字符数量的高32位值
注解
锁定的区域不能进行重叠操作。由不同的操作系统决定,可能要求先运行share.exe才能保证该函数正常工作
LockFileEx
VB声明
Declare Function LockFileEx Lib "kernel32" Alias "LockFileEx" (ByVal hFile As Long, ByVal dwFlags As Long, ByVal dwReserved As Long, ByVal nNumberOfBytesToLockLow As Long, ByVal nNumberOfBytesToLockHigh As Long, lpOverlapped As OVERLAPPED) As Long
说明
与LockFile相似,只是它提供了更多的功能
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hFile Long,欲锁定文件的句柄
dwFlags Long,指定下述一个或两个常数
LOCKFILE_FAIL_IMMEDIATELY 指出如锁定失败,函数应返回一个错误。否则,应用程序线程就会暂时挂起,并一直等待,直到能进行锁定为止
LOCKFILE_EXCLUSIVE_LOCK 指出锁定区域不可由另一个线程或进程读写。否则这个区域就只能防范“写”——其他进程仍然能够读取锁定区域的内容
dwReserved Long,未使用,设为零
nNumberOfBytesToLockLow Long,锁定区域包含字符数的低32位
nNumberOfBytesToLockHigh Long,锁定区域包含字符数的高32位
lpOverlapped OVERLAPPED,包含了文件中相对于锁定区域起始处的偏移量
注解
锁定区域不可重叠操作(即多个进程同时操作)
lopen
VB声明
Declare Function lopen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long
说明
以二进制模式打开指定的文件
返回值
Long,如执行成功,返回打开文件的句柄。HFILE_ERROR表示出错。会设置GetLastError
参数表
参数 类型及说明
lpPathName String,欲打开文件的名字
iReadWrite Long,访问模式和共享模式常数的一个组合,如下所示:
1、访问模式
READ 打开文件,读取其中的内容
READ_WRITE 打开文件,对其进行读写
WRITE 打开文件,在其中写入内容
2、共享模式(参考OpenFile函数的标志常数表)
OF_SHARE_COMPAT, OF_SHARE_DENY_NONE, OF_SHARE_DENY_READ, OF_SHARE_DENY_WRITE, OF_SHARE_EXCLUSIVE
注解
CreateFile函数在win32下提供了更多的功能
lread
VB声明
Declare Function lread Lib "kernel32" Alias "_lread" (ByVal hFile As Long, lpBuffer As Any, ByVal wBytes As Long) As Long
说明
将文件中的数据读入内存缓冲区
返回值
Long,返回实际读入的字节数。HFILE_ERROR意味着函数执行出错。如这个数字小于wBytes,则表明早已抵达了文件的末尾。会设置GetLastError
参数表
参数 类型及说明
hFile Long,文件句柄
lpBuffer Any,指定一个内存块的指针,数据将读入这个内存块
wBytes Long,要读入的字节数
lwrite
VB声明
Declare Function lwrite Lib "kernel32" Alias "_lwrite" (ByVal hFile As Long, ByVal lpBuffer As String, ByVal wBytes As Long) As Long
说明
将数据从内存缓冲区写入一个文件
返回值
Long,写入的字节数。HFILE_ERROR意味着函数执行出错。如这个数字小于wBytes,则表明早已抵达了文件的末尾。会设置GetLastError
参数表
参数 类型及说明
hFile Long,文件句柄
lpBuffer String,指定一个内存块的指针,把这个内存块的数据写入文件
wBytes Long,要写入的字节数
LZClose
VB声明
Declare Sub LZClose Lib "lz32.dll" Alias "LZClose" (ByVal hfFile As Long)
说明
关闭由LZOpenFile 或 LZInit函数打开的一个文件
参数表
参数 类型及说明
hfFile Long,欲关闭的句柄。这是由LZOpenFile 或 LZInit函数返回的一个句柄,不是普通的系统文件句柄
LZCopy
VB声明
Declare Function LZCopy Lib "lz32.dll" Alias "LZCopy" (ByVal hfSource As Long, ByVal hfDest As Long) As Long
说明
复制一个文件。如源文件已压缩,则会在复制期间解压。文件必须是用微软公司的compress.exe或等效工具压缩的
返回值
Long,如执行成功,返回目标文件的大小,以字节为单位。如执行出错,会返回小于零的一个常数,如下表
LZERROR_BADINHANDLE 源文件无效
LZERROR_BADOUTHANDLE 目标文件无效
LZERROR_GLOBALLOC 内部解压缓冲区的内存容量不足
LZERROR_GLOBLOCK 内部解压缓冲区的句柄无效
LZERROR_READ 无效的源文件格式
LZERROR_UNKNOWNALG 解压DLL不能识别源文件采用的压缩算法
LZERROR_WRITE 在磁盘上写入输出文件时出错,通常是由于磁盘空间不足造成的
参数表
参数 类型及说明
hfSource Long,指定源文件句柄。这是由LZOpenFile 或 LZInit函数返回的一个句柄
hfDest Long,指定目标文件句柄。这是由LZOpenFile 或 LZInit函数返回的一个句柄
LZInit
VB声明
Declare Function LZInit Lib "lz32.dll" Alias "LZInit" (ByVal hfSrc As Long) As Long
说明
这个函数用于初始化内部缓冲区。对一个给出打开文件句柄的一个文件进行解压时,将用到这个缓冲区
返回值
Long,由lz32.dll库使用的、那个文件的一个特殊句柄。这个文件句柄兼容于LZCopy, CopyLZFiles, LZRead 和 LZSeek函数。如果出错,该函数会返回下表列出的出错代码之一。注意完成后一定用LZClose关闭这个句柄
LZERROR_BADINHANDLE 源文件无效
LZERROR_BADOUTHANDLE 目标文件无效
LZERROR_GLOBALLOC 内部解压缓冲区的内存容量不足
LZERROR_GLOBLOCK 内部解压缓冲区的句柄无效
LZERROR_READ 无效的源文件格式
LZERROR_UNKNOWNALG 解压DLL不能识别源文件采用的压缩算法
LZERROR_WRITE 在磁盘上写入输出文件时出错,通常是由于磁盘空间不足造成的
参数表
参数 类型及说明
hfSrc Long,文件的句柄
注解
最多只能同时打开16个压缩文件句柄
LZOpenFile
VB声明
Declare Function LZOpenFile Lib "lz32.dll" Alias "LZOpenFileA" (ByVal lpszFile As String, lpOf As OFSTRUCT, ByVal style As Long) As Long
说明
该函数能执行大量不同的文件处理,而且兼容于压缩文件
返回值
Long,如函数执行成功,且样式(style)参数不为OF_READ,就返回常规的文件句柄,具体请参考OpenFile函数的说明。如样式参数为OF_READ,而且文件是压缩的,就会返回一个特殊的文件句柄,以便由LZCopy, LZRead 和 LZSeek函数使用。如出错,返回如下表所示的一个常数:
LZERROR_BADINHANDLE 源文件无效
LZERROR_BADOUTHANDLE 目标文件无效
LZERROR_GLOBALLOC 内部解压缓冲区的内存容量不足
LZERROR_GLOBLOCK 内部解压缓冲区的句柄无效
LZERROR_READ 无效的源文件格式
LZERROR_UNKNOWNALG 解压DLL不能识别源文件采用的压缩算法
LZERROR_WRITE 在磁盘上写入输出文件时出错,通常是由于磁盘空间不足造成的
参数表
参数 类型及说明
lpszFile String,欲打开的文件名
lpOf OFSTRUCT,该结构填充的数据包括与本次处理的文件和结果有关的信息
style Long,处理方式标志常数的一种组合。参考OpenFile函数的标志常数表
注解
参考OpenFile函数
LZRead
VB声明
Declare Function LZRead Lib "lz32.dll" Alias "LZRead" (ByVal hfFile As Long, ByVal lpvBuf As String, ByVal cbread As Long) As Long
说明
将数据从文件读入内存缓冲区。如hfFile是一个压缩文件的句柄,同时那个压缩文件是由LZOpenFile 或 LZInit函数打开的,这个函数就会在读入数据的同时对文件进行解压处理
返回值
Long,实际读入的字节数。如这个数字小于cbread,表明早已抵达了文件的末尾。如出错,返回下表列出的常数之一
LZERROR_BADINHANDLE 源文件无效
LZERROR_BADOUTHANDLE 目标文件无效
LZERROR_GLOBALLOC 内部解压缓冲区的内存容量不足
LZERROR_GLOBLOCK 内部解压缓冲区的句柄无效
LZERROR_READ 无效的源文件格式
LZERROR_UNKNOWNALG 解压DLL不能识别源文件采用的压缩算法
LZERROR_WRITE 在磁盘上写入输出文件时出错,通常是由于磁盘空间不足造成的
参数表
参数 类型及说明
hfFile Long,源文件的特殊句柄。这个句柄是由LZOpenFile 或 LZInit函数提供的
lpvBuf String,一个内存块的指针,数据将读入这个内存块
cbread Long,指定lpvBuf缓冲区的长度
LZSeek
VB声明
Declare Function LZSeek Lib "lz32.dll" Alias "LZSeek" (ByVal hfFile As Long, ByVal lOffset As Long, ByVal nOrigin As Long) As Long
说明
设置一个文件中进行读写的当前位置。如hfFile是一个压缩文件的句柄,同时那个压缩文件是由LZOpenFile 或 LZInit函数打开的,这个函数就会根据文件的解压版本进行查找
返回值
Long,返回一个新位置,采用从文件起始处计算的字节偏移量。如出错,返回下表列出的常数之一
LZERROR_BADINHANDLE 源文件无效
LZERROR_BADOUTHANDLE 目标文件无效
LZERROR_GLOBALLOC 内部解压缓冲区的内存容量不足
LZERROR_GLOBLOCK 内部解压缓冲区的句柄无效
LZERROR_READ 无效的源文件格式
LZERROR_UNKNOWNALG 解压DLL不能识别源文件采用的压缩算法
LZERROR_WRITE 在磁盘上写入输出文件时出错,通常是由于磁盘空间不足造成的
参数表
参数 类型及说明
hfFile Long,源文件的特殊句柄。这个句柄是由LZOpenFile 或 LZInit函数提供的
lOffset Long,以字节数表示的偏移量
nOrigin Long,下述值之一
0——lOffset将新位置指定成从文件的起始处计算偏移
1——lOffset将新位置指定成从当前位置开始计算偏移
2——lOffset将新位置指定成从文件的结尾处计算偏移
MapViewOfFile, MapViewOfFileEx
VB声明
Declare Function MapViewOfFile& Lib "kernel32" (ByVal hFileMappingObject As Long, ByVal dwDesiredAccess As Long, ByVal dwFileOffsetHigh As Long, ByVal dwFileOffsetLow As Long, ByVal dwNumberOfBytesToMap As Long)
Declare Function MapViewOfFileEx& Lib "kernel32" (ByVal hFileMappingObject As Long, ByVal dwDesiredAccess As Long, ByVal dwFileOffsetHigh As Long, ByVal dwFileOffsetLow As Long, ByVal dwNumberOfBytesToMap As Long, lpBaseAddress As Any)
说明
将一个文件映射对象映射到当前应用程序的地址空间。MapViewOfFileEx允许我们指定一个基本地址来进行映射
返回值
Long,文件映射在内存中的起始地址。零表示出错。会设置GetLastError
参数表
参数 类型及说明
hFileMappingObject Long,文件映射对象的句柄
dwDesiredAccess Long,下述常数之一:
FILE_MAP_WRITE 映射可读可写。文件映射对象必须通过PAGE_READWRITE访问创建
FILE_MAP_READ 映射只读。文件映射对象必须通过PAGE_READ 或 PAGE_READWRITE访问创建
FILE_MAP_ALL_ACCESS 与FILE_MAP_WRITE相同
FILE_MAP_COPY 映射时保留写操作的副本。文件映射对象必须用PAGE_WRITECOPY访问在win95下创建
dwFileOffsetHigh Long,文件中映射起点的高32位地址
dwFileOffsetLow Long,文件中映射起点的低32位地址
dwNumberOfBytesToMap Long,文件中要映射的字节数。用零映射整个文件映射对象
lpBaseAddress Long,指定映射文件映射对象的地址。如这个地址处没有足够的内存空间,那么对MapViewOfFileEx的调用会失效。零表示允许windows寻找一个地址
注解
dwFileOffsetLow和dwFileOffsetHigh必须反映一个偏移距离,它由系统的内存分配精度决定。例如,假设系统的内存精度是64KB(即最小分配单位是64KB),则这些值必须是64KB的整数倍。大多数应用程序都简单的用零从文件的起始处开始映射。lpBaseAddress也必须是内存分配精度的整数倍
其他
声明中的参数类型为Any,而参数表中都是Long,我也不明白。但关于这个函数的英文资料的确是这样的。
|
|