NO1、CreateFile //打开或创建文件或者I/O设备,并返回可访问的句柄
HANDLE WINAPI CreateFile(
HANDLE CreateFile(LPCTSTR lpFileName, //普通文件名或者设备文件名
DWORD dwDesiredAccess, //访问模式(写GENERIC_READ /读GENERIC_WRITE)
DWORD dwShareMode, //共享模式
LPSECURITY_ATTRIBUTES lpSecurityAttributes, //指向安全属性的指针
DWORD dwCreationDisposition, //如何创建
DWORD dwFlagsAndAttributes, //文件属性
HANDLE hTemplateFile //用于复制文件句柄
);
参数说明:太多了,复制粘贴都不想 可以去网上查一下。
返回值:失败返回INVALID_HANDLE_VALUE,成功返回一个内核对象句柄
NO2、SetFilePointer //移动一个打开文件的指针
DWORD SetFilePointer(
HANDLE hFile, // 文件句柄
LONG lDistanceToMove, // 偏移量(低位)
PLONG lpDistanceToMoveHigh, // 偏移量(高位)
DWORD dwMoveMethod // 基准位置FILE_BEGIN:文件开始位置 FILE_CURRENT:文件当前位置 FILE_END:
//文件结束位置
说明:移动一个打开文件的指针
返回值:返回一个新位置,从文件起始处开始算起的一个字节偏移量。
NO3、SetEndOfFile //将当前文件指针位置设置为文件尾
BOOL WINAPI SetEndOfFile(HANDLE hFile);
说明:将当前位置设置为文件尾
返回值:非零表示成功,0表示失败。
NO4、DuplicateHandle //拷贝另一个文件句柄的收获可以用到
BOOL WINAPI DuplicateHandle(
__in HANDLE hSourceProcessHandle,
__in HANDLE hSourceHandle,
__in HANDLE hTargetProcessHandle,
__out LPHANDLE lpTargetHandle,
__in DWORD dwDesiredAccess,
__in BOOL bInheritHandle,
__in DWORD dwOptions
);
参数 类型及说明
hSourceProcessHandle:源进程内核句柄(即负责传递内核对象句柄的进程句柄,可以利用
GetCurrentProcess获得当前进程的伪句柄)
hSourceHandle:要传递的内核对象句柄
hTargetProcessHandle:目标进程内核句柄
lpTargetHandle:接收内核对象句柄的地址(先随便声明一个HANDLE)
dwDesiredAccess:TargetHandle句柄使用何种访问掩码(这个掩码是在句柄表中的一项)
bInheritHandle:是否拥有继承
dwOptions:当设DUPLICATE_SAME_ACCESS时,表示于源的内核对象所有标志一样,此时wDesiredAccess可标志
为0
返回值:非零成功,0表示失败
NO5、FlushFileBuffers //刷新内部文件缓冲区
BOOL WINAPI FlushFileBuffers(
__in HANDLE hFile; //文件句柄
)
说明:刷新文件缓冲区
返回值:非零成功,0失败
NO6、GetFileSize //获取文件长度
DWORD WINAPI GetFileSize(
__in HANDLE hFile,
__out LPDWORD lpFileSizeHigh
);
参数说明:
hFile:文件的句柄。
lpFileSizeHigh:指定一个长整数,用于装载一个64位文件长度的头32位。如这个长度没有超过2^32个字节,则
该参数可以设为NULL(变成ByVal)。
返回值:如果函数调用成功,则返回值为文件大小的低位双字,lpFileSizeHigh返回文件大小的高阶双字。
如果函数返回值为INVALID_FILE_SIZE,并且GetLastError函数返回值非NO_ERROR,则函数调用失败。
功能:获得文件大小
示例代码:
DWORD fileSizeHigh;
DWORD fileSizeLow = GetFileSize(hFile,&fileSizeHigh);
UNIT64 fileSize = (((UINT64)fileSizeHiegh) << 32 ) | fileSizeLow;
NO7、GetFileType //获得文件类型
DWORD WINAPI GetFileType(
__in HANDLE hFile; //文件句柄
)
说明:判断文件类型
返回值:下述常数之一:
FILE_TYPE_UNKNOWN 文件类型未知
FILE_TYPE_DISK 属于磁盘文件
FILE_TYPE_CHAR 文件是一个控制台或打印机
FILE_TYPE_PIPE 文件是个管道
NO8、LockFile和UnLockFile //锁定,解锁文件区域,防止访问冲突
BOLL WINAPI LockFile(
__in hFile, //欲锁定文件的句柄
__in dwFileOffsetLow, //指定欲锁定区域起始处的低32位地址
__in dwFileOffsetHigh, //指定欲锁定区域起始处的高32位地址
__in nNumberOfBytesToLockLow, //锁定区域包含字符数量的低32位值
__in nNumberOfBytesToLockHigh, //锁定区域包含字符数量的高32位值
)
BOLL WINAPI UnLockFile(
__in hFile, //欲解锁文件的句柄
__in dwFileOffsetLow, //指定欲解锁区域起始处的低32位地址
__in dwFileOffsetHigh, //指定欲解锁区域起始处的高32位地址
__in nNumberOfBytesToUnLockLow, //锁定区域包含字符数量的低32位值
__in nNumberOfBytesToUnLockHigh, //锁定区域包含字符数量的高32位值
)
说明:如果文件是以共享模式打开,多个进程都可以访问该文件,会出现访问冲突,利用LockFile和UNLockFile
可以解决。
返回值:成功返回非零,失败返回0
NO9、CFileException //这是一个文件相关异常的类
说明:(百度百科复制的)
个CFileException对象代表了与文件相关的异常。CFileException类包括有可移植的原因代码和操作系统指定错误值等公共数据成员。此类也提供产生文件异常的静态成员函数,返回操作系统和C运行中的错误原因代码。
CFileException对象在CFile成员函数中被创建和产生,也可在派生类成员函数中创建或产生。可在CATCH表达式范围内访问这些对象。因为可移植,可以仅用出错代码获取异常的原因。
成员:
m_cause包含异常原因相对应的可移植代码
m_IosError包含相关操作系统错误代码
m_strFileName包含异常的文件名
代码专函:
OsErrorToException返回与操作系统错误值相对应的出错原因代码
ErrnoToException返回与运行错误值相对应的出错原因代码
帮助函数:
ThrowOsError返回一个基于操作系统错误值相对应的出错原因代码
CFileException::ThrowOsError(::GetLastError()); //可以对GetLastError返回的值进行类型转换
ThrowErrno产生一个基于运行错误值的文件异常