问题标签 [createfile]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
2894 浏览

winapi - 是否可以将已为同步 I/O 打开的 HANDLE 更改为在其生命周期内为异步 I/O 打开?

现在,我在 Windows 中的大部分日常编程工作都围绕着各种 I/O 操作(管道、控制台、文件、套接字……)。我很清楚从/向不同类型的句柄读取和写入的不同方法(同步、异步等待事件完成、等待文件句柄、I/O 完成端口和可警报 I/O)。我们使用其中的许多。

对于我们的某些应用程序,只有一种方法来处理所有句柄将非常有用。我的意思是,程序可能不知道它收到了什么样的句柄,我们想使用,比如说,所有的 I/O 完成端口。

所以首先我会问:

假设我有一个句柄:

我的 I/O 进程从某个地方收到了它。有没有简单可靠的方法来找出它是用什么标志创建的?有问题的主要标志是FILE_FLAG_OVERLAPPED.

到目前为止,我知道的唯一方法是尝试将此类句柄注册到 I/O 完成端口(使用CreateIoCompletionPort())。如果成功,则使用 FILE_FLAG_OVERLAPPED 创建句柄。但是只有 I/O 完成端口必须使用,因为句柄不能在不关闭HANDLE h自身的情况下从它注销。

如果有一种简单的方法来确定 的存在FILE_FLAG_OVERLAPPED,那么我的第二个问题就会出现:

有什么办法可以将这样的标志添加到已经存在的句柄中?这将使最初为同步操作打开的句柄为异步打开。有没有办法创建相反的(FILE_FLAG_OVERLAPPED从异步中删除创建同步句柄)?

在阅读了 MSDN 并搜索了很多之后,我没有找到任何直接的方法。至少会有一些技巧可以做到这一点吗?CreateFile()就像使用函数或类似的东西以相同的方式重新创建句柄?甚至部分记录或根本没有记录的东西?

我需要这个的主要地方是确定进程应该从第三方应用程序发送给它的句柄中读取/写入的方式(或更改方式)。我们无法控制第三方产品如何创建它们的句柄。

亲爱的 Windows 大师:请帮助!

带着敬意

马丁

0 投票
2 回答
1015 浏览

createfile - 通过覆盖 Win32 File API 实现虚拟文件

有没有办法覆盖 Win32 文件 API,例如 CreateFile()?我希望我的应用程序只为我的应用程序查看一个虚拟文件,但是,该虚拟文件实际上并不存在。

0 投票
1 回答
490 浏览

c# - 如何使用 C#(或至少 C++)和 Win32API 获取 FAT 中目录数据的第一个簇?

我有一个 FAT 驱动器,比如说 H: 和一个目录 'work'(完整路径 'H:\work')。我需要获取该目录的第一个集群的编号。第一个簇的编号是 2 字节的值,即存储在文件夹条目的第 26 和 27 字节(即 32 字节)中。

可以说我是用文件而不是目录来做的。我可以使用这样的代码:

它会返回一些数字,比如 19(对我来说非常真实,这是磁盘上唯一的文件)。

但我不需要文件,我需要一个文件夹。所以我将 FILE_FLAG_BACKUP_SEMANTICS 参数用于 CreateFile 调用......并且不知道下一步该做什么。有没有办法让它为文件夹工作?

msdn 在这个问题上非常清楚http://msdn.microsoft.com/en-us/library/aa365258(v=VS.85).aspx

这对我来说听起来像:“你无法获得文件夹的第一个集群的数量”。最绝望的是,我的导师说“你会得到这个,否则你不会通过这个课程”。他如此确定这是可能的真正原因是因为 10 年(或可能更长)他收到了文件夹的第一个簇号作为文件夹地址的 HASH(我很愚蠢地指向他,所以现在我不能这样做)

PS:这是我做过的最愚蠢的任务!这个值并没有真正在程序中的任何地方使用,它只是一个无意义的整数。

0 投票
1 回答
2454 浏览

ram - 调用 CreateFile,指定 FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSE

在我描述我的问题之前,这里是我正在编写的 C++ 程序的描述:

  • 我的程序的目的是在 RAM 内存上创建文件。

我读到,如果FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSE在创建文件时指定,它将直接加载到 RAM 内存中。

谈论的博客之一是这个:

这只是暂时的

拉里·奥斯特曼,2004 年 4 月 19 日

要创建一个“临时”文件,您调用 CreateFileFILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSEdwFlagsAndAttributes属性中指定。这种位组合作为对文件系统的提示,文件数据不应该被刷新到磁盘。换句话说,无需系统接触磁盘即可创建、写入和读取这样的文件。

我已经建立了一个小程序,但它没有达到目标。相反,它会在我指定的目录中的硬盘驱动器上创建一个文件。

这是我的程序:

我认为CreateFile函数存在问题,但我无法修复它。请帮我。

0 投票
6 回答
9992 浏览

c++ - 如果未使用 CloseHandle 正确关闭,则重新打开串行端口失败

我在 Windows 上使用被视为虚拟串行端口的 USB 设备。我可以使用 CreateFile 和 ReadFile 函数与设备通信,但在某些情况下,我的应用程序不会调用 CloseHandle(当我的开发应用程序崩溃时)。之后,对 CreateFile 的所有调用都失败(ERROR_ACCESS_DENIED),唯一的解决方案是再次登录我的计算机。有没有办法以编程方式强制关闭打开的句柄(或重新打开)?

0 投票
4 回答
6122 浏览

windows - 在 Windows 中,除了可移植性,我应该使用 CreateFile 还是 fopen?

有什么区别,在什么情况下,其中一种会在某种程度上被证明是优越的?

0 投票
1 回答
359 浏览

file-io - 如何在TFS 2008的指定目录下自动创建一个sql脚本文件供开发者添加sql脚本?

我刚刚修改了我的问题。实际上,我想在 TFS 2008 源代码控制服务器中的指定目录/文件夹中创建一个空的 txt/.sql 文件,开发人员可以在其中为他们的开发部分添加 sql 脚本。

每次我们的夜间构建脚本运行时,我都需要自动创建这个文件。我使用 MakeDir 任务创建了目录或文件夹,如下所示:

我想知道是否有一些任务可以帮助我在 TFS 中创建一个空文件。我不想使用 EXEC 命令,而是使用标准任务。

如果 MSBuild 扩展包或 SDC 中有用于此目的的内容,请分享。

问候

大家好,

当我的脚本运行以创建一个完整的构建时,我想每晚在指定路径的源代码管理中创建和计划文本文件。如何使用 TFSBuild.proj scrip/msbuild 脚本在源代码控制中的任何位置创建新的纯文本文件。

非常感谢您的帮助。

谢谢大家。

编辑:

实际上我需要一种通过 MSBuild/Team Build Tasks 的方法。就像我们可以使用创建一样,同样我正在寻找一个可以通过 msbuild 或团队构建脚本 (tfsbuild.pro) 中的一些标准任务调用的任务。

0 投票
1 回答
58 浏览

objective-c - 可可创建文件路径

我正在尝试在 mac os 上创建一个文件。应用程序将访问文件中的数据。但是如何创建一个对所有帐户都具有读取权限的文件。目前该应用程序只能读取管理员帐户中的数据。我正在使用以下语法:

BOOL B = [fm createFileAtPath:p1 contents:data attributes:nil];

它是否与属性有关,以便所有用户都可以阅读但只能由管理员修改。

谢谢你。

这是 ls -dl 的输出

是不是因为我在系统/库中创建文件,如果是这样,这是创建文件的最佳位置,以便所有用户都可以读取它,但只能由管理员修改。

谢谢你

0 投票
4 回答
7130 浏览

php - php 创建给定大小的文件

如何在 PHP 中创建具有给定大小的文件(无论内容如何)?

我必须创建一个大于 1GB 的文件。最大 4-10GB

0 投票
2 回答
3214 浏览

c - 使用本机 Win32 读取“C”中的文本文件(Unicode)

我有一个使用 CreateFile() 和 WriteFile() 创建的面向行的文本文件 (Unicode)。

使用 ReadFile() 将该文件作为二进制流读取很简单,但需要额外的低级处理才能将其分成几行。

是否有一个 Win32 函数可以为我执行此操作?

再次请注意,它在“C”(不是 C++)中,我不想使用诸如 readline() 之类的 POSIX/ANSI C 函数。

如果上述问题的答案是否定的,那么仅使用本机 Win32 C 函数来完成读取面向行的文本文件的“最短代码”是什么?例如使用 ReadFile()、StrChr() 等。

谢谢。