做网站需要的电脑配置环球军事新闻
作用:
CreateFile可以用来打开很多设备,例如:文件、目录、串口、并口、邮件槽、命名管道、逻辑磁盘驱动器、物理磁盘驱动器等。
## 定义:
 HANDLE CreateFile(
  LPCTSTR lpFileName,   (文件名的指针) 
  DWORD dwDesiredAccess,    (访问模式:写 / 读) 
  DWORD dwShareMode,    (共享模式 )
  LPSECURITY_ATTRIBUTES lpSecurityAttributes, (安全属性的指针 )
  DWORD dwCreationDisposition,  (怎样创建 )
  DWORD dwFlagsAndAttributes,  (文件属性) 
  HANDLE hTemplateFile    (用于复制文件句柄 )
 );
参数列表:
|   参数  |   类型及说明  | |
|   lpFileName  |   LPCTSTR ,文件的名字  | |
|   dwDesiredAccess  |   DWORD,如果为 GENERIC_READ 表示允许对设备进行读访问;如果为 GENERIC_WRITE 表示允许对设备进行写访问(可组合使用);如果为零,表示只允许获取与一个设备有关的信息  | |
|   dwShareMode  |   DWORD ,零表示不共享; FILE_SHARE_READ 和 / 或 FILE_SHARE_WRITE 表示允许对文件进行共享访问  | |
|   lpSecurityAttributes  |   SECURITY_ATTRIBUTES ,指向一个 SECURITY_ATTRIBUTES 结构的指针,定义了文件的安全特性(如果操作系统支持的话)  | |
|   dwCreationDisposition  |   DWORD,常用属性:  | |
|   CREATE_NEW  |   创建文件;如文件存在则会出错  | |
|   CREATE_ALWAYS  |   创建文件,会改写前一个文件  | |
|   OPEN_EXISTING  |   文件必须已经存在。由设备提出要求  | |
|   OPEN_ALWAYS  |   如文件不存在则创建它  | |
|   TRUNCATE_EXISTING  |   讲现有文件缩短为零长度  | |
|   dwFlagsAndAttributes  |   DWORD ,常用属性:  | |
|   FILE_ATTRIBUTE_ARCHIVE  |   标记归档属性  | |
|   FILE_ATTRIBUTE_COMPRESSED  |   将文件标记为已压缩,或者标记为文件在目录中的默认压缩方式  | |
|   FILE_ATTRIBUTE_NORMAL  |   默认属性  | |
|   FILE_ATTRIBUTE_HIDDEN  |   隐藏文件或目录  | |
|   FILE_ATTRIBUTE_READONLY  |   文件为只读  | |
|   FILE_ATTRIBUTE_SYSTEM  |   文件为系统文件  | |
|   FILE_FLAG_WRITE_THROUGH  |   操作系统不得推迟对文件的写操作  | |
|   FILE_FLAG_OVERLAPPED  |   允许对文件进行重叠操作  | |
|   FILE_FLAG_NO_BUFFERING  |   禁止对文件进行缓冲处理。文件只能写入磁盘卷的扇区块  | |
|   FILE_FLAG_RANDOM_ACCESS  |   针对随机访问对文件缓冲进行优化  | |
|   FILE_FLAG_SEQUENTIAL_SCAN  |   针对连续访问对文件缓冲进行优化  | |
|   FILE_FLAG_DELETE_ON_CLOSE  |   关闭了上一次打开的句柄后,将文件删除。特别适合临时文件  | |
|   也可在 Windows NT 下组合使用下述常数标记:  | ||
|   SECURITY_ANONYMOUS , SECURITY_IDENTIFICATION , SECURITY_IMPERSONATION , SECURITY_DELEGATION , SECURITY_CONTEXT_TRACKING ,SECURITY_EFFECTIVE_ONLY  | ||
|   hTemplateFile  |   HANDLE ,如果不为零,则指定一个文件句柄。新文件将从这个文件中复制扩展属性  | |
用法举例:
DWORD Openfile(LPCTSTR pszFileName,BOOL isWriteAble, BOOL isOverExsit, HANDLE &m_hFile)
{DWORD dwRet = ERROR_SUCCESS;if (pszFileName == NULL){return ERROR_INVALID_PARAMETER;}try{m_hFile = CreateFile(pszFileName, isWriteAble ? GENERIC_ALL :GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE, NULL, isOverExsit ? CREATE_ALWAYS:(isWriteAble ?OPEN_ALWAYS:OPEN_EXISTING), FILE_ATTRIBUTE_NORMAL, NULL);if (m_hFile == INVALID_HANDLE_VALUE){dwRet = GetLastError();throw dwRet;}}catch (DWORD dwExp){dwRet = dwExp;}catch (...){dwRet = ERROR_FILE_INVALID;}return dwRet;
}
 
  
