精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VB和Basic>>〓〓.VB电子文档集锦.〓〓>>《老猫:VB声明API》>>VB API:文件处理函数 第二页

主题:VB API:文件处理函数 第二页
发信人: winsy(鹰派)
整理人: winsy(2003-03-15 10:41:49), 站内信件
FlushViewOfFile 

VB声明 
Declare Function FlushViewOfFile Lib "kernel32" Alias "FlushViewOfFile" (lpBaseAddress As Any, ByVal dwNumberOfBytesToFlush As Long) As Long 
说明 
将写入文件映射缓冲区的所有数据都刷新到磁盘 
返回值 
Long,非零表示成功,零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
lpBaseAddress Any,包含了刷新基本地址的一个Long值(参考注解) 
dwNumberOfBytesToFlush Long,欲刷新的字节数 
注解 
如与远程系统建立了文件映射,那么虽然这个函数可保证数据已在当前系统写入,但不能保证数据实际写入远程系统的磁盘——除非用FILE_FLAG_WRITE_THROUGH 选项打开文件。该选项的作用是禁止写延迟,所有更新的数据都必须立即写入磁盘
这个函数的另一种声明形式:Declare Function FlushViewOfFile& Lib "kernel32" (ByVal lpBaseAddress As Long, ByVal dwNumberOfBytesToFlush As Long)
 

GetBinaryType 

VB声明 
Declare Function GetBinaryType Lib "kernel32" Alias "GetBinaryTypeA" (ByVal lpApplicationName As String, lpBinaryType As Long) As Long 
说明 
判断文件是否可以执行 
返回值 
Long,非零表示成功,零表示失败 
参数表 
参数 类型及说明 
lpApplicationName String,欲测试文件的完整路径名 
lpBinaryType Long,用于装载文件类型的一个变量。这些类型由下述任何一个常数定义: 
SCS_32BIT_BINARY win32执行程序 
SCS_DOS_BINARY DOS执行程序 
SCS_OS216_BINARY 16位OS/2执行程序 
SCS_PIF_BINARY 用于执行DOS程序的一个pif文件 
SCS_POSIX_BINARY 一个Posix应用 
SCS_WOW_BINARY 16位windows执行程序 


GetCompressedFileSize 

VB声明 
Declare Function GetCompressedFileSize Lib "kernel32" Alias "GetCompressedFileSizeA" (ByVal lpFileName As String, lpFileSizeHigh As Long) As Long 
说明 
判断一个压缩文件在磁盘上实际占据的字节数 
返回值 
Long,返回文件长度。&HFFFFFFFF表示出错。注意如lpFileSizeHigh不为NULL,且结果为&HFFFFFFFF,那么必须调用GetLastError,判断是否实际发生了一个错误,因为这是一个有效的结果 
参数表 
参数 类型及说明 
lpFileName String,欲测试的文件名 
lpFileSizeHigh Long,指定一个Long值,用于装载一个64位文件尺寸的高32位。如长度没有超过2^32字节,则可设为NULL(变成ByVal) 
注解 
如磁盘卷已被压缩,可检查这个函数的结果是否与GetFileSize函数的结果有异,从而判断文件是否也被压缩(如有异,表明文件已被压缩)
 

GetCurrentDirectory 

VB声明 
Declare Function GetCurrentDirectory Lib "kernel32" Alias "GetCurrentDirectory" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long 
说明 
在一个缓冲区中装载当前目录 
返回值 
Long,装载到lpBuffer的字节数。如nBufferLength的长度不够,不足以容纳目录,则返回值是必要的缓冲区长度(要求至少这个长度),其中包括空中止字符。零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
nBufferLength Long,lpBuffer缓冲区的长度 
lpBuffer String,指定一个预定义字串,用于装载当前目录 


GetDiskFreeSpace 

VB声明 
Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTtoalNumberOfClusters As Long) As Long 
说明 
获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量 
返回值 
Long,非零表示成功,零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
lpRootPathName String,不包括卷名的一个磁盘根路径 
lpSectorsPerCluster Long,用于装载一个簇内扇区数的变量 
lpBytesPerSector Long,用于装载一个扇区内字节数的变量 
lpNumberOfFreeClusters Long,用于装载磁盘上剩余簇数的变量 
lpTtoalNumberOfClusters Long,用于装载磁盘上总簇数的变量 
注解 
在采用FAT16格式的windows95系统中,如一个驱动器(分区)的容量超过了2GB,则不应使用这个函数。此时,这个函数能识别的最大分区容量只有2GB
 

GetDiskFreeSpaceEx 

VB声明 
Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias "GetDiskFreeSpaceExA" (ByVal lpRootPathName As String, lpFreeBytesAvailableToCaller As LARGE_INTEGER, lpTotalNumberOfBytes As LARGE_INTEGER, lpTotalNumberOfFreeBytes As LARGE_INTEGER) As Long 
说明 
获取与一个磁盘的组织以及剩余空间容量有关的信息 
返回值 
Long,非零表示成功,零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
lpRootPathName String,不包括卷名的磁盘根路径名 
lpFreeBytesAvailableToCaller LARGE_INTEGER,指定一个变量,用于容纳调用者可用的字节数量 
lpTotalNumberOfBytes LARGE_INTEGER,指定一个变量,用于容纳磁盘上的总字节数 
lpTotalNumberOfFreeBytes LARGE_INTEGER,指定一个变量,用于容纳磁盘上可用的字节数 
适用平台 
Windows 95 OSR2,Windows NT 4.0 
注解 
LARGE_INTEGER结构与FILETIME结构在内部完全一致。正式调用前,用GetVersionEx判断函数是否得到了支持。在Windows 95 OSR2环境中,OSVERSIONINFO结构的dwBuildNumbe字段会大于1000
 

GetDriveType 

VB声明 
Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long 
说明 
判断一个磁盘驱动器的类型 
返回值 
Long,如驱动器不能识别,则返回零。如指定的目录不存在,则返回1。如执行成功,则用下述任何一个常数指定驱动器类型:DRIVE_REMOVABLE, DRIVE_FIXED, DRIVE_REMOTE, DRIVE_CDROM 或 DRIVE_RAMDISK 
参数表 
参数 类型及说明 
nDrive String,包含了驱动器根目录路径的一个字串 


GetExpandedName 

VB声明 
Declare Function GetExpandedName Lib "lz32.dll" Alias "GetExpandedNameA" (ByVal lpszSource As String, ByVal lpszBuffer As String) As Long 
说明 
取得一个压缩文件的全名。文件必须是用 COMPRESS.EXE 程序压缩的,而且在压缩时适用/r选项 
返回值 
Long,1表示成功,LZERROR_BADVALUE 表示失败 
参数表 
参数 类型及说明 
lpszSource String,压缩文件的名字 
lpszBuffer String,指定一个缓冲区,用于装载文件全名 
注解 
注意事先将lpszBuffer字串初始化成一个合适的长度,使其足以容纳文件名
 

GetFileAttributes 

VB声明 
Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long 
说明 
判断指定文件的属性 
返回值 
Long,-1表示出错。如返回包含了标志的一个Long值,则指定文件的属性。其中的标志对应于带有FILE_ATTRIBUTE_???前缀的常数。具体参考BY_HANDLE_FILE_INFORMATION结构的File Attribute Types table表格 
参数表 
参数 类型及说明 
lpFileName String,指定欲获取属性的一个文件的名字 


GetFileInformationByHandle 

VB声明 
Declare Function GetFileInformationByHandle Lib "kernel32" Alias "GetFileInformationByHandle" (ByVal hFile As Long, lpFileInformation As BY_HANDLE_FILE_INFORMATION) As Long 
说明 
这个函数提供了获取文件信息的一种机制——在一个BY_HANDLE_FILE_INFORMATION结构中装载与文件有关的信息 
返回值 
Long,非零表示成功,零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
hFile Long,文件的句柄 
lpFileInformation BY_HANDLE_FILE_INFORMATION,用于容纳文件信息的结构 


GetFileSize 

VB声明 
Declare Function GetFileSize Lib "kernel32" Alias "GetFileSize" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long 
说明 
判断文件长度 
返回值 
Long,返回文件长度。&HFFFFFFFF表示出错。注意如lpFileSizeHigh不为NULL,且结果为&HFFFFFFFF,那么必须调用GetLastError,判断是否实际发生了一个错误,因为这是一个有效的结果 
参数表 
参数 类型及说明 
hFile Long,文件的句柄 
lpFileSizeHigh Long,指定一个长整数,用于装载一个64位文件长度的头32位。如这个长度没有超过2^32字节,则该参数可以设为NULL(变成ByVal) 


GetFileTime 

VB声明 
Declare Function GetFileTime Lib "kernel32" Alias "GetFileTime" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long 
说明 
取得指定文件的时间信息 
返回值 
Long,非零表示成功,零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
hFile Long,文件的句柄 
lpCreationTime FILETIME,用于装载文件的创建时间 
lpLastAccessTime FILETIME,用于装载文件上一次访问的时间(FAT文件系统不支持这一特性) 
lpLastWriteTime FILETIME,用于装载文件上一次修改的时间 
注解 
如果不需要特定的信息,那么lpCreationTime,lpLastAccessTime,lpLastWriteTime都可以设置为零(用ByVal As Long)。这个函数返回的文件时间采用UTC格式
 

GetFileType 

VB声明 
Declare Function GetFileType Lib "kernel32" Alias "GetFileType" (ByVal hFile As Long) As Long 
说明 
在给出文件句柄的前提下,判断文件类型 
返回值 
Long,下述常数之一: 
FILE_TYPE_UNKNOWN 文件类型未知 
FILE_TYPE_DISK 属于磁盘文件 
FILE_TYPE_CHAR 文件是一个控制台或打印机 
FILE_TYPE_PIPE 文件是个管道 
参数表 
参数 类型及说明 
hFile Long,要检查的文件的句柄 


GetFileVersionInfo 

VB声明 
Declare Function GetFileVersionInfo& Lib "version.dll" Alias "GetFileVersionInfoA" (ByVal lptstrFilename As String, ByVal dwHandle As Long, ByVal dwLen As Long, lpData As Byte) 
说明 
从支持版本标记的一个模块里获取文件版本信息 
返回值 
Long,非零表示成功,零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
lptstrFilename String,欲从中载入版本信息的一个文件的名字 
dwHandle Long,win32中未用 
dwLen Long,由lpData参数指定的字节数组或缓冲区的大小。用GetFileVersionInfoSize函数判断要求的缓冲区长度有多大 
lpData Byte,指定一个字节缓冲区的第一个字节。该缓冲区用于装载文件的版本信息 
注解 
在win32下不用dwHandle参数
 
其他 
请看vb的api文本查看器中的声明:Declare Function GetFileVersionInfo Lib "version.dll" Alias "GetFileVersionInfoA" (ByVal lptstrFilename As String, ByVal dwHandle As Long, ByVal dwLen As Long, lpData As Any) As Long 


GetFileVersionInfoSize 

VB声明 
Declare Function GetFileVersionInfoSize Lib "version.dll" Alias "GetFileVersionInfoSizeA" (ByVal lptstrFilename As String, lpdwHandle As Long) As Long 
说明 
针对包含了版本资源的一个文件,判断容纳文件版本信息需要一个多大的缓冲区 
返回值 
Long,容纳文件的版本资源所需的缓冲区长度。如文件不包含版本信息,则返回一个0值。会设置GetLastError 
参数表 
参数 类型及说明 
lptstrFilename String,包含了版本资源的一个文件的名字 
lpdwHandle Long,在这个变量中载入0值 
注解 
lpdwHandle参数在win32中已经放弃
 

GetFullPathName 

VB声明 
Declare Function GetFullPathName& Lib "kernel32" Alias "GetFullPathNameA" (ByVal lpFileName As String, ByVal nBufferLength As Long, ByVal lpBuffer As String, lpFilePart As Long) 
说明 
获取指定文件的完整路径名 
返回值 
Long,装载到lpBuffer中的字符数量(排除空中止字符)。如缓冲区的长度不足以容下完整的路径,则返回值就是要求的缓冲区大小。零表示失败。会设置GetLastError 
参数表 
参数 类型及说明 
lpFileName String,指定文件名(长文件名或8.3格式的DOS文件名) 
nBufferLength Long,lpBuffer字串的长度 
lpBuffer String,指定一个预先定义好的字串,用于装载目标文件的驱动器及路径名称。如存在长文件名,那么这个参数保存的就肯定是长文件名 
lpFilePart Long,指定一个长整数变量,用于装载文件名起始的地方。参考注解 
注解 
lpFilePart参数在vb里很难使用。它的问题在于:尽管windows在这个Long值中装载lpBuffer字串中的地址,用它表示路径信息文件名部分的起始处。但非常不幸,由vb创建的、传递给api的ANSI字串缓冲区也会使用这个地址。等这个函数返回的时候,vb已将返回的(lpBuffer)字串复制回它的内部Unicode字串缓冲区,所以lpFilePart地址已没有任何意义。因此,我们面临两种选择。首先,可以简单的不使用lpFilePart信息(忽略windows装载在参数中的值)。其次,可以将lpBuffer参数变成一个字节数组(lpFilePart As Byte——将数组的第一个元素作为参数传递)
 
其他 
在vb的api文本查看器中复制的声明为:Declare Function GetFullPathName Lib "kernel32" Alias "GetFullPathNameA" (ByVal lpFileName As String, ByVal nBufferLength As Long, ByVal lpBuffer As String, ByVal lpFilePart As String) As Long 

[关闭][返回]