问题标签 [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 投票
1 回答
1057 浏览

windows - 打开闪存驱动器的句柄会给我一个“拒绝访问”错误代码

我想知道为什么当我尝试创建 USB 闪存驱动器的句柄时,我收到一个找不到路径的错误。

从那里我想读取一个 512 字节的流(引导扇区)到一个 .bin 文件,但我似乎无法先通过句柄创建。Windows 是否阻止应用程序打开可移动驱动器的句柄?

0 投票
3 回答
5921 浏览

createfile - WriteFile() 调用适用于 x86,但不适用于 x64。获取错误代码 6 -- 使用 VB.NET 时句柄无效

我正在使用 CreateFile、WriteFile 和 ReadFile API 调用将一些数据写入 USB 设备。我的代码在 32 位系统上运行良好。CreateFile 获取设备的句柄,将该句柄和一些数据传递给 WriteFile,并使用 ReadFile 从该句柄中读取。

我的问题是,相同的代码在 64 位系统上不起作用。WriteFile 返回的错误为 6,句柄无效。我在 CreateFile 调用中检查了句柄的有效性,它是一个有效的句柄。在 CreateFile 之后调用 GetLastError() 将返回 0。正在打开“文件”以进行重叠通信,并且重叠的 init 调用也正在返回它们的正确值。

我的问题是:因为它是 64 位系统,我需要做一些不同的考虑吗?不同的旗帜?完全不同的电话?

请注意,我对代码进行了一些修改以使其同步(取出 OVERLAPPED)并且它起作用了,所以我假设问题出在我的 OVERLAPPED 结构或我初始化调用的方式上.

任何帮助是极大的赞赏。

编辑:

下面是我的 API 签名和我用于 OVERLAPPED 实现的代码

以下是出现问题的写入代码。需要注意的是,在读取中,OVERLAPPED结构的hEvent参数以同样的方式初始化

0 投票
6 回答
21309 浏览

c++ - 将字符串转换为 LPCWSTR 以用于 CreateFile() 以寻址串行端口

使用 Windows CreateFile 函数寻址串行端口时,我似乎遇到了一些 TEXT / UNICODE 问题。有人可以帮忙指出我的错误吗?

我正在使用 VS 2008 在 VC++ 中编写一个 Win32 控制台应用程序。

我可以像这样创建一个句柄来寻址串行端口:

这工作得很好(该\\\\.\\位对于大于 COM9 的端口是必需的,并且也适用于那些高达 COM9 的端口)。问题是我的comport 并不总是COM20,所以我想让用户指定它是什么。

以下是我尝试过的一些事情:

这不会编译并返回错误:错误 C2664: 'CreateFileW' : cannot convert parameter 1 from 'std::string' to 'LPCWSTR'

我想也许当时指定 CreateFileA 会起作用,但这给出了基本相同的错误。

我也试过:

它也不会编译并返回:错误 C2065: 'LcomID' : undeclared identifier

我不是专家,但我已经为此工作了一段时间。有人可以告诉我如何以L"\\\\.\\COM20"用户可以指定 comport 的方式进行替换,这样 CreateFile 仍然可以工作吗?谢谢!

0 投票
5 回答
98610 浏览

c++ - 无法将参数 1 从“char”转换为“LPCWSTR”

我不断收到此错误: cannot convert parameter 1 from 'char' to 'LPCWSTR'

有人可以帮忙吗?

0 投票
1 回答
301 浏览

c - 关于有效文件路径的问题

我正在使用以下代码创建文件,但它总是失败,错误代码为 123(路径语法无效)。

奇怪的是:path_ok一直没问题,但是path_err总是以 123 失败。并且失败后,path_err指向的缓冲区被清除。

任何人都可以对我有所了解吗?我检查了 2 个指针的内存,它们的内容似乎是相同的。

非常感谢。

ComposeDumpFileName() 函数是这样的:

更新

在我上面的代码中,当我执行以下代码时:

ComposeDumpFileName 返回后,其栈帧无效,但其局部变量WCHAR dump_file_path[MAX_PATH]仍然存在于栈中。所以这解释了为什么我仍然可以看到它的内容,尽管它的堆栈空间已经无效。

然后我执行以下语句:

wprintf() 和 CreateFileW() 有自己的堆栈帧。虽然在调试器中,我发现 wprintf() 的堆栈帧并没有破坏pDumpFileName指向的内存内容,但 CreateFileW 可能有,所以它抱怨路径语法无效。

这是我目前的理解,如有错误请指正。

谢谢。

0 投票
2 回答
1718 浏览

c++ - CreateFileMapping 程序之间是否同步?

我计划使用内存映射打开一个文件。

该文件已经被另一个进程以相同的方式打开,即它有自己的内存映射视图打开并且不时编辑该文件。

我希望自己编辑同一个文件,并尽可能有效地与另一个进程共享对它的访问,而不希望每个进程覆盖另一个进程所做的更改而发生冲突。

我可以首先直接打开文件:

但是,直接编辑文件二进制文件是无效的,因为其他进程的内存映射对象可能会覆盖我的更改。

如果我打开我自己的文件映射和我自己的视图,如下所示,另一个进程似乎会随着我的编辑自动更新,不会覆盖我的编辑。

这里发生了什么同步性?

并不是我打开了我自己的映射视图到其他进程的文件映射。我在同一个文件上创建了一个全新的 FileMapping。

文件系统或 FileMapping 系统似乎以某种方式理解这一点。为什么?

0 投票
5 回答
20341 浏览

c# - 在 C# 中创建随机文件

我正在创建一个指定大小的文件——我不在乎里面有什么数据,虽然随机会很好。目前我正在这样做:

这不是有效的,甚至不是正确的方法。有更高性能的解决方案吗?

感谢所有的答案。

编辑

对 2Gb 文件的以下方法进行了一些测试(时间以毫秒为单位):

方法1:乔恩·斯基特

不适用 - 2Gb 文件的内存不足异常

方法 2:乔恩·斯基特

@1K - 45,868、23,283、23,346

@128K - 24,877、20,585、20,716

@8Kb - 30,426、22,936、22,936

方法 3 - Hans Passant(超快但数据不是随机的)

257、287、3、3、2、3 等

0 投票
7 回答
22309 浏览

c# - 创建应用程序图标的最佳方法

为应用程序创建图标的最佳方式是什么?

来自 Visual Studio 或其他程序。

我在 Visual Studio 中创建了一个图标并将其用作应用程序图标,但是当我将图标快捷方式放在桌面上时,只有一些灰色图标。这可能是因为图标尺寸还是其他原因?

0 投票
5 回答
1552 浏览

c++ - 使用 Windows C++ API 创建任意大小的文件

我想使用 Windows C/C++ API 创建一个任意大小的文件。我正在使用具有 32 位虚拟地址内存空间的 Windows XP Service Pack 2。我熟悉 CreateFile。

但是 CreateFile 没有大小参数,我想传入大小参数的原因是允许我创建内存映射文件,允许用户访问预定大小的数据结构。您能否建议适当的 Windows C/C++ API 函数,它允许我创建任意预定大小的文件?谢谢

0 投票
2 回答
322722 浏览

java - 如何在java中创建空文件夹?

我尝试使用File 类在“C:/Temp/Emptyfile”之类的目录中创建一个空文件。但是,当我这样做时,它向我显示一个错误:“已经创建文件夹临时”。否则,它不会为我创建一个。

那么,我如何使用 java API 从字面上创建文件夹?