CreateFile函数解释 createfile函数详解

CreateFile函数解释

  API函数CreateFile可打开和创建文件、管道、邮槽、通信服务、设备以及控制台,但是在此时只是介绍用这个函数怎么实现创建和打开一个文件。

HANDLE CreateFile(
 LPCTSTR lpFileName, // 要打开的文件名
 DWORD dwDesiredAccess, // 文件的操作属性
 DWORD dwShareMode, // 文件共享属性
 LPSECURITY_ATTRIBUTES lpSecurityAttributes,// 文件安全特性
 DWORD dwCreationDisposition, //文件操作
 DWORD dwFlagsAndAttributes, // 文件属性
 HANDLE hTemplateFile //如果不为零,则指定一个文件句柄。新文件将从这个文件中复制扩展属性
);

  文件的操作属性:如果为零,表示只允许获取与一个设备有关的信息,GENERIC_READ表示允许对设备进行读访问;如果为 GENERIC_WRITE表示允许对设备进行写访问(可组合使用);

  文件的共享属性:零表示不共享;FILE_SHARE_READ 或 FILE_SHARE_WRITE表示允许对文件进行读/写共享访问;

  文件的操作有:

  ·CREATE_NEW:创建文件;如文件存在则会出错
  ·CREATE_ALWAYS:创建文件,会改写前一个文件
  ·OPEN_EXISTING:文件必须已经存在。由设备提出要求
  ·OPEN_ALWAYS:如文件不存在则创建它
  ·TRUNCATE_EXISTING:将现有文件缩短为零长度

  文件属性有:

  ·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:关闭了上一次打开的句柄后,将文件删除。特别适合临时文件

  可以组合的属性有:FILE_FLAG_WRITE_THROUGH,FILE_FLAG_OVERLAPPED,FILE_FLAG_NO_BUFFERING,FILE_FLAG_RANDOM_ACCESS,FILE_FLAG_SEQUENTIAL_SCAN,FILE_FLAG_DELETE_ON_CLOSE,FILE_FLAG_BACKUP_SEMANTICS,FILE_FLAG_POSIX_SEMANTICS,FILE_FLAG_OPEN_REPARSE_POINT,FILE_FLAG_OPEN_NO_RECALL

  如果成功返回一个打开文件得句柄,如果调用函数之前文件存在,文件操作属性为:CREATE_ALWAYS或OPEN_ALWAYS,使用GetLastError函数返回的是ERROR_ALREADY_EXISTS(包括函数操作成功),如果之前函数不存在,则返回0。使用失败返回INVALID_HANDLE_VALUE,要取得更多的信息,使用GetLastError函数。

  文件关闭用:

BOOL CloseHandle(HANDLE hObject // handle toobject to close);

  例子1、在当前目录下面创建一个文件:

HANDLE handle;
DWORD Num;
handle=::CreateFile("new.tmp",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_ALWAYS,FILE_FLAG_DELETE_ON_CLOSE,NULL);
if(INVALID_HANDLE_VALUE!= handle )
{
 ::SetFilePointer(handle,0,0,FILE_BEGIN);
 char Buffer[] = "这是个刚创建的文件";
 ::WriteFile(handle,Buffer,sizeof(Buffer),&Num,NULL);
 ZeroMemory(Buffer,sizeof(Buffer));
 ::SetFilePointer(handle,0,0,FILE_BEGIN);
 ::ReadFile(handle,Buffer,sizeof(Buffer),&Num,NULL);
 MessageBox(Buffer);
 ::CloseHandle(handle);
CreateFile函数解释 createfile函数详解
}

  

爱华网本文地址 » http://www.413yy.cn/a/25101018/371177.html

更多阅读

Excel函数详解:166 FREQUENCY函数用法

Excel函数详解:[166]FREQUENCY函数用法——简介FREQUENCY函数,用于以垂直数组的形式返回多个数值在某个区域内出现的频率。该函数返回的是数组,所以必须以数组公式的形式进行输入。Excel函数详解:[166]FREQUENCY函数用法——工具/原料

Excel函数详解:12 MONTH函数使用方法

Excel函数详解:[12]MONTH函数使用方法——简介MONTH函数,用于返回指定日期中的月份,返回月份的值范围是整数1(一月)~12(十二月)。Excel函数详解:[12]MONTH函数使用方法——工具/原料Excel for MacExcel函数详解:[12]MONTH函数使用方法——函

详解Excel错误代码“#NAME?”问题 贪吃蛇java代码详解

详解Excel错误代码“#NAME?”问题——简介在使用Excel制作表格的过程中,经常会使用到一些函数和公式,在应用的过程中,如果运算不当,就会出现一些错误代码。当然,出现这些错误代码的原因往往是我们操作有误所造成,我们可以根据Excel中提示

转 WinSocksend函数和recv函数详解 winsock recvfrom

send函数int send( SOCKET s, const charFAR *buf, intlen, int flags);不论是客户还是服务器应用程式都用send函数来向TCP连接的另一端发送数据。客户程式一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程式发送

十二地支详解 十二地支的特点和解释

十二地支详解子水:遇木则两两相通,方成媾交。它能与申子相合,会成大江,水势奔腾,灭火滥堤。有着推翻旧制创立新体之能,但必以甲木引发其气,不然就会根烂木雕,人成奸邪之徒。如遇乙木则刑之,为何言刑?是由于乙木乃花草之木,不能纳水养身,遇旺

声明:《CreateFile函数解释 createfile函数详解》为网友筅森魡賤分享!如侵犯到您的合法权益请联系我们删除