Winapi 异步读/写文件的最简单方法?

Winapi 异步读/写文件的最简单方法?,winapi,file,asynchronous,Winapi,File,Asynchronous,我正在寻找一种使用WinAPI异步读/写文件的简单方法。我想到的是类似于异步WinsockAPI(WSAxxx)完成例程的东西。然而,文件API似乎没有这些。它们藏在什么地方了吗 在单独的线程中等待重叠事件会增加线程管理开销,更不用说每个文件需要一个线程,或者需要面对64个对象的问题。完成端口是一种过度的杀伤力。在单独的线程上同步读取文件是不相关的 有什么建议吗?我知道在.net中是很有用的。我不知道它映射到哪个win32函数,我知道在.net中它是。我不知道它映射到哪个win32函数Creat

我正在寻找一种使用WinAPI异步读/写文件的简单方法。我想到的是类似于异步WinsockAPI(WSAxxx)完成例程的东西。然而,文件API似乎没有这些。它们藏在什么地方了吗

在单独的线程中等待重叠事件会增加线程管理开销,更不用说每个文件需要一个线程,或者需要面对64个对象的问题。完成端口是一种过度的杀伤力。在单独的线程上同步读取文件是不相关的


有什么建议吗?

我知道在.net中是很有用的。我不知道它映射到哪个win32函数,我知道在.net中它是。我不知道它映射到哪个win32函数

CreateFile
ReadFile
/
WriteFile
函数支持所谓的“重叠”模式,这正是您所需要的。还有只在异步模式下工作的
ReadFileEx
/
writefilex

简言之,您需要使用
file\u FLAG\u OVERLAPPED
标志打开文件,并将
OVERLAPPED
结构(以及在
xxxEx
操作时的回调)传递给文件访问函数


使用它的示例类。

CreateFile
ReadFile
/
WriteFile
函数支持所谓的“重叠”模式,这正是您所需要的。还有只在异步模式下工作的
ReadFileEx
/
writefilex

简言之,您需要使用
file\u FLAG\u OVERLAPPED
标志打开文件,并将
OVERLAPPED
结构(以及在
xxxEx
操作时的回调)传递给文件访问函数


一个使用它的示例类。

一旦你进入异步领域,你应该忘记“最容易”这个词
说真的,最简单的方法是在构造函数和BeginRead/EndRead方法中使用.NET的System.IO.FileStream和isAsync=true。

一旦进入异步领域,就应该忘记“最简单”这个词 说真的,最简单的方法是在构造函数和BeginRead/EndRead方法中使用.NET的System.IO.FileStream和isAsync=true