问题标签 [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 回答
1206 浏览

java - 设置为 ReadDirectoryChangesW 打开的目录的最后修改时间

我有一个 Java 程序,它需要监视目录树的变化。我有使用ReadDirectoryChangesW(). 目录打开方式如下:

然后我dirHandle传给ReadDirectoryChangesW(). 所有这些都很好。

问题是代码的其他部分(在 Java 端)用于File.setLastModified()“触摸”文件或目录(将它们的时间戳更新为“现在”)。这通常有效;但是,当它尝试“触摸”使用CreateFile().

为了查看实际发生的 Windows 错误,我查看了 JDK 源代码,File.setLastModified()并在我自己的代码中重新实现了它,并添加了从GetLastError();打印错误。错误是:

怎么回事?这是相同的过程。我什至通过FILE_SHARE_READFILE_SHARE_WRITECreateFile()

有没有办法使这项工作?

更多信息

File.setLastModified()JDK 中的本机代码实现执行以下操作:

如果我将第一个更改0FILE_SHARE_READ | FILE_SHARE_WRITE,则一切正常。所以看起来JDK实现有点坏了。:(

所以我现在的问题变成了:有没有办法让这项工作而不必使用我自己的(重新)实现File.setLastModified()

0 投票
3 回答
2245 浏览

winapi - 关闭并立即重新打开 COM 端口失败:为什么?

我正在尝试通过在启动允许用户执行通信操作的对话框窗口之前测试 COM 端口的“可打开性”来进行“飞行前检查”。

这是代码序列的概要:

这就是问题所在:“DoTheWork”是一个久经考验的功能,并且可以自行正确执行。只有在前面的 CreateFile/CloseHandle 调用之后立即调用它才会失败,此时第二个 CreateFile 返回 E_ACCESSDENIED。

更糟糕的是,如果我在调试器中慢慢地单步调试代码,它工作得很好。

在第一个 closeHandle 之后,我似乎需要一个 Sleep(),但这感觉就像一个 hack - 我无法知道它必须多长时间。

0 投票
1 回答
205 浏览

visual-c++ - 读取 ASCII 文件 TAB 替换为 NULL

我在 Visual C++ 2008 中使用 CreateFileA 和 ReadFile 打开一个 ASCII 文本文件并将其读入内存。这可以正常工作(我可以在内存中查看其内容),但有一个例外。由于某种原因,TAB 字符 (0x09) 被更改为 NULL (0x00)。不用说,当我尝试解析文件时,这会造成严重破坏。有谁知道可能是什么原因造成的,或者我该如何解决?

这就是我打开文件的方式:

我的项目代码具有强大的错误处理能力,而且我没有收到任何错误。任何建议,将不胜感激。

谢谢。

0 投票
3 回答
715 浏览

c# - 为什么 .NET 不能在内部清除错误?

我正在运行以下场景:

pass 是错误的,但可以预料,因为我正在运行重叠。
问题是 Marshal.GetLastWin32Error() 不返回 ERROR_IO_PENDING 它返回 ERROR_ALREADY_EXISTS。这对我来说很奇怪,因为当我创建文件时错误并没有显示,但是当我写它时出现了。现在我试图弄清楚如何关闭我似乎无法访问的句柄,或者至少得到一个关于为什么会发生这种情况的解释。

编辑:好的,我已经解决了问题,我知道是什么导致了问题。

显然,AppendAllText 调用在内部创建了一个错误。我应该在此日志调用后重置错误吗?我想知道框架不会在其函数的内部工作中重置低级调用会很有帮助。啊,你每天都学到新东西。

我想我的新问题是,我应该在这个调用之后重置低级错误,还是有其他方法来记录输出(不使用像 log4Net 这样的 3rd 方工具或对 Debug.Trace 输出感兴趣)?基本上以某种方式打开一个不影响 Marshal.GetLastWin32Error(); 的附加文件;输出。

0 投票
1 回答
1729 浏览

python - Python CreateFile 找不到 PhysicalMemory

我正在尝试访问 Windows 2000 系统的物理内存(尝试在没有内存转储工具的情况下执行此操作)。我的理解是我需要使用 CreateFile 函数来创建句柄。我使用了旧版本的win32dd来帮助我解决这个问题。网络上的其他文档指向我使用“\Device\PhysicalMemory”或“\\.\PhysicalMemory”。不幸的是,我得到了相同的错误。

实际上,每次运行返回的错误号都不同 \\.\PhysicalMemory == 3 和 \Device\PhysicalMemory == 2。对 pywin32、win32file、createfile、pyhandle 和 pywintypes 的审查没有产生关于不同返回值的信息.

这是我的代码。我正在使用 py2exe 让它在 Windows 2000 上运行(是的,它编译成功)。我意识到我可能对 DeviceIoControl 也有问题,但现在我专注于 CreateFile。

谢谢,切图

0 投票
1 回答
8315 浏览

c - CreateFile() 可以在两个不同的线程中同时打开一个文件吗

CreateFile() 可以在两个不同的线程中同时打开一个文件吗


void new_function(void * what) {

}

int main() {

}


每次它在该GetLastError位置退出。并且错误是ERROR_SHARING_VIOLATION(32,“该进程无法访问该文件,因为它正在被另一个进程使用。”)

如果我无法共享打开文件,那么文件的用途是什么FILE_SHARE_WRITE | FILE_SHARE_READ

谢谢

The program environment is Win32 Vs2003

0 投票
1 回答
12217 浏览

c++ - 带有 FILE_FLAG_DELETE_ON_CLOSE 标志的 CreateFile

在我描述我的问题之前,这里是我正在编写的程序(IHExplorer.exe)的描述:

这是一个 C++ 应用程序。

IHExplorer 应用程序看起来尽可能像 Windows 资源管理器窗口。除了一个例外,从这个资源管理器窗口中启动文件将首先将它们解密到用户的临时文件夹,然后启动与文件扩展名关联的应用程序并在关闭时删除文件。

我遇到的问题是文件关闭时自动删除。这是一个场景:

  1. 用户在 IHExplorer 中双击一个加密的 .txt 文件。
  2. IHExplorer 解密内存中的 .txt 文件,然后使用 ::CreateFile 将其写入 %TEMP%,该文件返回文件的句柄(IHExplorer 必须保持此句柄至少打开,直到 .txt 文件被 shell 执行)。

  3. IHExplorer Shell 从其临时位置执行 .txt 文件(通过调用 ::ShellExecute)。

  4. 现在 IHExplorer 和记事本都有打开文件的句柄。
  5. 当 IHExplorer 和记事本都关闭了文件的句柄时,必须自动删除该文件,即使 IHExplorer 先关闭也是如此。

行。这是一个基本的用户案例,描述了我想要发生的事情。我遇到的问题是当我 ::ShellExecute() 时,记事本说“该进程无法访问该文件,因为它正在被另一个进程使用。” (这将是 IHExplorer)。我需要解决这个问题并让记事本打开它,即使我仍然在 IHExplorer 中打开了句柄。

这是我对 ::CreateFile 的调用如下所示:

请注意,我使用了 FILE_SHARE_DELETE 以便其他进程(例如记事本)可以使用删除权限打开文件。

请注意,我使用了 FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSE 属性指示文件是临时文件,应在关闭时删除。

还要注意 &sa 参数。这是我正在使用的 SECURITY_ATTRIBUTES 结构,我觉得(希望)这就是我的问题所在。这是代码,这次我将发布整个函数,以便您查看我如何填写 SECURITY_ATTRIBUTES 结构:

我想如果我确定正确的 SECURITY_DESCRIPTOR 传递给 ::CreateFile 它可能会像我想要的那样工作。请帮忙。

顺便说一句,LaunchFile 函数最终只是调用 ::ShellExecute 来启动文件。

0 投票
1 回答
788 浏览

c# - 循环调用物理设备路径上的 CreateFile

我有一些 C# 代码每次通过循环(即 \.\PhysicalDrive1,然后 \.\PhysicalDrive2,...)通过 pInvoke 调用不同物理设备路径上的 CreateFile,然后使用返回的句柄执行其他一些低级别窗户的东西。在循环结束时,它在句柄上调用 CloseHandle。

在调试时,我注意到句柄的 int 值在每次循环中都是相同的。我可以看到这是预期的(windows 只是重用句柄)或意外的(句柄未在最后一次释放)。

所以我只想验证这是否是预期的(或至少不是不正确的)行为。

0 投票
8 回答
2780 浏览

windows - 如何使用纯 c 或 linux-shell 或 dos-commands 创建一个超大文件?

我的操作系统和驱动器是

那么,如何在几秒钟内创建一个超大文件

有人告诉我使用 MappingFile 函数。我无法创建超过 2G 的文件所以...您的热情回复将不胜感激谢谢

0 投票
2 回答
4052 浏览

c# - CreateFile 在打开 fs 驱动程序时失败

我正在尝试与我的文件系统驱动程序进行通信。我可以使用 OpenSCManager、CreateService 和 OpenService 启动驱动程序,但是当我尝试使用“CreateFile”时,它总是显示错误代码 2(我认为它是找不到文件等)。

这是整个代码:

和我的主要:

输出是:

DriverLoading 和 Unloading 工作正常(使用 DebugView 检查)。问题是 CreateFile 总是说“-1”/“2”。我已经用其他驱动程序对其进行了测试,但仍然相同。当我用 CreateFile 打开一个文本文件时,它工作正常,但我想与我的驱动程序(DeviceIOControl)通信,所以我需要打开驱动程序设备......

有人可以帮我/给我一个提示吗?谢谢!