.net – 如何异步打开Windows中的文件
有没有办法在
Windows中异步打开文件? CreateFile API函数只有FILE_FLAG_OVERLAPPED,允许进一步的异步读写.尽管如此,文件的打开似乎是同步的.鉴于,它必须访问文件系统(并可能执行昂贵的IO操作),它可能是一个潜在的阻止程序.
这实际上是一个潜在的问题,是否可以异步打开.NET中的文件(因为无法等待FileStream ctor).但如果在操作系统中无法做到这一点,问题就毫无意义. 解决方法
不幸的是,在用户模式下无法异步创建/打开文件.即使驱动程序返回STATUS_PENDING为
IRP_MJ_CREATE ,系统也会在这种情况下等待,直到驱动程序完成IRP,然后才能从其中一个create / open文件函数返回控制权.
只有当我们处于内核模式时,才有可能,如果您自己格式化 对于API是异步的 – 必须以某种方式在操作完成时通知调用者 windows使用了3种方法 >参数中的一些回调例程,通常是APC(PIO_APC_ROUTINE) 3)在我们的情况下是不可能的,因为文件句柄还没有创建,所以它不能绑定到任何IOCP.关于1)和2)让我们查找文件open / create api签名: 在用户模式下,打开/创建文件的最低级别api是 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |