c++ createfile

C++文件相关函数CreateFileReadFileWriteFile用法详解

在C++中,文件操作是一个非常常见的功能,为了方便地进行文件的创建、读取和写入等操作,C++提供了一些文件操作相关的函数,本文将详细介绍C++中的CreateFile、ReadFile和WriteFile这三个文件操作函数的用法。

c++ createfile

CreateFile函数

CreateFile函数用于创建或打开一个现有的文件,其原型如下:

HANDLE CreateFile(
  LPCTSTR               lpFileName,
  DWORD                 dwDesiredAccess,
  DWORD                 dwShareMode,
  LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  DWORD                 dwCreationDisposition,
  DWORD                 dwFlagsAndAttributes,
  HANDLE                hTemplateFile
);

参数说明:

lpFileName:要创建或打开的文件的名称。

dwDesiredAccess:指定要请求的访问权限,可以是以下值的组合:GENERIC_READ(只读)、GENERIC_WRITE(可写)、GENERIC_EXECUTE(可执行)、DELETE(删除文件)、READ_CONTROL(读控制)、WRITE_DAC(写访问控制)、SYNCHRONIZE(同步)和STANDARD_RIGHTS_REQUIRED(标准权限)。

dwShareMode:指定其他进程对文件的共享模式,可以是以下值的组合:FILE_SHARE_READ(读共享)、FILE_SHARE_WRITE(写共享)、FILE_SHARE_DELETE(删除共享)和0(不共享)。

lpSecurityAttributes:指向一个SECURITY_ATTRIBUTES结构的指针,该结构指定了新文件的安全属性,如果为NULL,则使用默认的安全属性。

dwCreationDisposition:指定如何创建文件,可以是以下值的组合:CREATE_NEW(创建新文件)、CREATE_ALWAYS(总是创建新文件)、OPEN_EXISTING(打开现有文件)、OPEN_ALWAYS(总是打开现有文件)、TRUNCATE_EXISTING(截断现有文件)和CREATE_NORMAL(创建普通文件)。

dwFlagsAndAttributes:指定文件的标志和属性,通常设置为0。

hTemplateFile:可选参数,如果指定了该参数,CreateFile函数将尝试使用该模板文件的属性来创建新文件,如果该参数为NULL,则使用默认的属性。

c++ createfile

返回值:如果函数成功,返回一个有效的句柄;如果函数失败,返回INVALID_HANDLE_VALUE,要获取更多的错误信息,可以调用GetLastError函数。

ReadFile函数

ReadFile函数用于从已打开的文件中读取数据,其原型如下:

BOOL ReadFile(
  HANDLE                hFile,
  LPVOID                lpBuffer,
  DWORD                nNumberOfBytesToRead,
  LPDWORD                lpNumberOfBytesRead,
  LPOVERLAPPED        lpOverlapped
);

参数说明:

hFile:要读取数据的文件的句柄,由CreateFile或OpenFile函数返回。

lpBuffer:指向接收读取数据的缓冲区的指针。

nNumberOfBytesToRead:要读取的数据的字节数。

lpNumberOfBytesRead:指向一个变量的指针,该变量接收实际读取的字节数,如果该参数为NULL,则忽略此参数。

lpOverlapped:指向一个OVERLAPPED结构的指针,该结构指定了异步操作的相关信息,如果为NULL,则同步执行ReadFile函数。

返回值:如果函数成功,返回非零值;如果函数失败,返回零,要获取更多的错误信息,可以调用GetLastError函数。

c++ createfile

WriteFile函数

WriteFile函数用于向已打开的文件中写入数据,其原型如下:

BOOL WriteFile(
  HANDLE                hFile,
  LPCVOID                lpBuffer,
  DWORD                nNumberOfBytesToWrite,
  LPDWORD                lpNumberOfBytesWritten,
  LPOVERLAPPED        lpOverlapped
);

参数说明:

hFile:要写入数据的文件的句柄,由CreateFile或OpenFile函数返回。

lpBuffer:指向要写入数据的缓冲区的指针。

nNumberOfBytesToWrite:要写入的数据的字节数。

lpNumberOfBytesWritten:指向一个变量的指针,该变量接收实际写入的字节数,如果该参数为NULL,则忽略此参数,注意,这个参数实际上是用来返回实际写入的字节数的,而不是用来限制写入字节数的,即使传入了一个较小的字节数,WriteFile也可能会写入更多的字节,如果传入了一个较大的字节数,WriteFile将不会写入超过该字节数的数据。

lpOverlapped:指向一个OVERLAPPED结构的指针,该结构指定了异步操作的相关信息,如果为NULL,则同步执行WriteFile函数,与ReadFile类似,这里也可以传入一个OVERLAPPED结构来实现异步操作,需要注意的是,WriteFile和ReadFile不能同时进行异步操作,如果两个函数都使用了OVERLAPPED结构并且同时进行了异步操作,那么其中一个函数的操作将会被挂起,直到另一个函数完成操作,这可能会导致程序无法正确地读取或写入数据,在使用这两个函数时,需要确保它们之间没有冲突。

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/171793.html

(0)
打赏 微信扫一扫 微信扫一扫
K-seo的头像K-seoSEO优化员
上一篇 2023-12-27 01:18
下一篇 2023-12-27 01:20

相关推荐

  • createfile函数怎么定义和使用

    createfile函数怎么定义和使用函数定义createfile函数是用于在操作系统中创建新文件的内置函数,这个函数通常在各种编程语言中使用,例如C++,Python等,下面是一个基本的createfile函数的定义和用法示例。C++中的createfile函数在C++中,你可以使用fstream库中的ofstream类来创建新的文……

    2023-12-22
    0127
  • createfile failed

    创建文件失败。

    2024-01-23
    0248
  • 使用CreateFile打开串口失败

    在Windows操作系统中,串口通信是一种常见的通信方式,它可以通过串行端口进行数据传输,在开发过程中,我们经常需要使用CreateFile函数来打开串口,有时候我们可能会遇到使用CreateFile打开串口失败的情况,本文将详细介绍CreateFile函数的使用方法,以及如何解决使用CreateFile打开串口失败的问题。Creat……

    2024-01-25
    0189

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入