CreateFile详解

 

CreateFile函数用于创建,打开文件,COM端口,设备,服务或控制台,并返回一个句柄。

 

函数原型:

HANDLE CreateFile( LPCTSTR lpFileName, // 指向文件名的指针 DWORD dwDesiredAccess, // 访问模式 DWORD dwShareMode, // 共享模式 LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 指向安全属性的指针 DWORD dwCreationDisposition, // 如何创建 DWORD dwFlagsAndAttributes, // 文件属性 HANDLE hTemplateFile // 用于复制文件句柄 );

 

参数:

lpFileName                      要操作的文件名

 

dwDesiredAccess             GENERIC_READ 表示允许对设备进行读访问;如果为 GENERIC_WRITE 表示允许对设备进行写访问(可组合使用);0,表示只允许获取与一个设备有关的信息

 

dwShareMode                  FILE_SHARE_READ 表示允许读取共享;FILE_SHARE_WRITE表示允许写入共享

 

 

lpSecurityAttributes          指向SECURITY_ATTRIBUTES结构体的指针

 

dwCreationDisposition      CREATE_NEW 表示创建一个新文件;CREATE_ALWAYS 表示如果文件不存在则创建;OPEN_EXISTING 表示打开已存在的文件;OPEN_ALWAYS 表示打开文件,如果不存在则创建并打开;TRUNCATE_EXISTING 表示将文件大小改为0 byte;

 

dwFlagsAndAttributes       FILE_ATTRIBUTE_ARCHIVE 表示标记归档属性;FILE_ATTRIBUTE_COMPRESSED 表示将文件标记为已压缩;FILE_ATTRIBUTE_HIDDEN 表示标记文件为隐藏;FILE_ATTRIBUTE_NORMAL 表示将文件标记为默认属性;FILE_ATTRIBUTE_READONLY 表示标记文件为只读属性;FILE_ATTRIBUTE_SYSTEM 表示标记文件为系统文件;FILE_ATTRIBUTE_ROMMODULE 表示标记文件在ROM中执行;FILE_ATTRIBUTE_TEMPORARY 表示标记文件为临时存储的

 

hTemplateFile                 表示正在创建的文件将使用模板文件的扩展属性

 

 

示例代码:

#include "stdafx.h" #include <Windows.h> #include <cstdio> int _tmain(int argc, _TCHAR* argv[]) { HANDLE hFile; DWORD nBytes; hFile = CreateFile(_T("test.out"), GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, 0, NULL); char msg[] = "欢迎访问hongxchen的Blog"; if(hFile != INVALID_HANDLE_VALUE) { WriteFile(hFile, &msg, sizeof(msg), &nBytes, NULL); CloseHandle(hFile); } hFile = CreateFile(_T("test.out"), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_ALWAYS, 0, NULL); if (hFile != INVALID_HANDLE_VALUE) { char line[256] = {0}; BOOL bResult; bResult = ReadFile(hFile, &line, sizeof(line), &nBytes, NULL); if (nBytes != 0) { printf("%s/r/n", line); } CloseHandle(hFile); } return 0; }  

你可能感兴趣的:(File,Security,null,System,attributes,archive)