问题标签 [deviceiocontrol]

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 投票
4 回答
10070 浏览

.net - 在 .NET 中,如何在 NTFS 中创建连接,而不是符号链接?

我正在尝试创建一个 NTFS 连接。在 cmd 行中,我可以使用sysinternals 的 junction.exe 工具执行此操作。结点的 DIR cmd 输出如下所示:

我在某处读到交界处是符号链接的子集。

所以我尝试使用CreateSymbolicLink创建一个 Junction。当我这样做时,我实际上得到了一个符号链接,而不是一个联结。

还有CreateHardLink。那里的文档说连接点(又名“重解析点”)是硬链接的一个子集。但我似乎无法让这个电话工作。它完成,但没有创建硬链接或结点。

我正在使用 .NET/C#,导入看起来像这样:

我究竟做错了什么?
如何从 C# 中创建连接?

0 投票
1 回答
7303 浏览

c# - 使用 usbser.sys 冻结 SerialPort.Open / DeviceIoControl / GetcommState

我有一个 C 程序,它打开一个 COM 端口的句柄,向它写入一些字节,读取一些字节,然后关闭句柄并退出。但是,当我连续运行该程序 10 次时,开始需要很长时间才能完成该GetCommState功能并卡在该SetCommState功能中。同样的事情发生在 C# 的一个简单SerialPort对象中。

我能找到的唯一解决方法是将设备重新连接到端口。有没有更优雅的方法来摆脱这种冻结?可能只是一些PC配置错误?

更新

我已经重写了代码以使其使用DeviceIoControl而不是SetCommState. 但是,这里的问题完全相同。

第一个问题:DeviceIoControl不会立即返回(虽然是异步调用的)并且会挂起大约两分钟。第二个问题:在这两分钟之后,它失败并出现错误代码 121(ERR_SEM_TIMEOUT:“信号量超时期限已过期。”)。

  • 使用的驱动是标准的windows驱动usbser.sys
  • 关于为什么函数调用没有立即返回的任何想法?如果没有,如何为函数设置更短的超时时间?
  • 关于为什么功能失败的任何想法?

更新 2

也会冻结的示例 C# 代码(如上面的 C 程序):

示例输出如下:

0 投票
1 回答
2154 浏览

c - FSCTL_LOCK_VOLUME 在装载的 VHD 上失败并显示 ERROR_ACCESS_DENIED

我正在开发一个将 FreeDOS 安装到虚拟硬盘上的程序。它生成并执行 DiskPart 脚本来创建 VHD、对其进行分区、格式化,然后为其分配驱动器号。

这工作正常。我的安装程序将所有内容复制到 VHD,但现在我需要编写一个引导扇区,这需要直接访问该卷。在开始此过程之前,我尝试使用 FSCTL_LOCK_VOLUME 锁定卷。

问题是:DeviceIoControl返回ERROR_ACCESS_DENIED,这(根据 MSDN)意味着卷上有打开的文件。但是我的安装程序在完成复制后会关闭每个文件,所以我不确定还有什么可能导致这种情况。它与 DiskPart 如何安装 VHD 有关吗?

DiskPart 脚本示例

注意:文件路径、磁盘大小、文件系统和驱动器盘符值会根据提供给程序的选项而变化。

C代码

0 投票
1 回答
511 浏览

winpcap - Winpcap 和 DeviceIoControl - Win7 上的错误代码 1

我正在尝试使用 Winpcap PacketRequest() 函数(位于 packet32.h 中)将 OID 发送到网络适配器。它适用于 XP32,不适用于 Win7 32 和 Win7 64(在 Win7 64 中我得到最后一个错误代码 1,在 32 中我不知道 - 我目前无法访问 32 位)。我查看了 PacketRequest() 函数的来源 - 它调用 DeviceIoControl(),这是失败的函数,因此 PacketRequest() 失败。

我是否使用了错误的 Winpcap 库?(我已经安装了 WinPcap_4_1_2.exe)

为什么win7不能运行?

提前致谢。

0 投票
2 回答
1450 浏览

windows - 如何在 C/C++ 中以编程方式在外部 USB HD 上启用“更好的性能”

如何在 C/C++ 中以编程方式在外部 USB HD 上启用“更好的性能”。

具体来说,我说的是 Microsoft Windows 控制面板中的设备属性窗格。这启用了一种操作系统级别的写入缓存。

更好的绩效政策

0 投票
4 回答
4605 浏览

c# - 使磁盘联机/脱机

我有一个程序对 Windows 中的磁盘进行原始 IO。

如果目标磁盘在线,一切正常。但是,某些 Windows 操作系统中的默认行为是让新磁盘最初处于脱机状态。

我很难在 Windows 上找到正确的 API 来执行此操作。命令行等效项类似于:

但是我需要能够在代码中做到这一点。我查看了 DeviceIoControl Win32 API(我认为这是正确的),但无法确定要使用哪个控制代码。我找不到它的事实让我觉得我可能缺少更好的 API 来使用。

0 投票
2 回答
2393 浏览

c++ - 错误:“IOCTL_STORAGE_QUERY_PROPERTY”未在此范围内声明

我已经包含winioctl.h,并且该文件中没有#definefor IOCTL_STORAGE_QUERY_PROPERTYhttp://www.osronline.com/ddkx/storage/k307_8z3m.htm说它在但我 在我的 Windows XP 上ntddstor.h找不到任何东西。ntddstor.h但是IOCTL_STORAGE_QUERY_PROPERTY 提到它应该与 Windows XP 一起工作(我不需要> Vista 特定查询)并且它提到winioctl.h只包含!(我没有使用 Visual C++,我使用 Qt 和 MinGW)

0 投票
2 回答
1142 浏览

c# - 编组时 LARGE_INTEGER 值发生变化:从 LARGE_INTEGER 到 UINT64 (C) 到 C# 的 uint64

我尝试NdisGetCurrentSystemTime通过 ioctl 将结果编组到 C# 程序。

在C#接收端,时间字段定义为uint64;编组结构中还有几个其他 uint64 字段。然而,当做

我意外地得到与 DBGPRINT 中的数字不同的大数字。

C#:

C:

字节顺序有什么奇怪的吗?

0 投票
0 回答
1618 浏览

python - Python win32file 模块 DeviceIoControl 参数不正确

我有一台联想 ThinkPad 笔记本电脑,它内置了一个名为 Active Protection System 的加速度计。我的操作系统是 Windows 7,我安装了 python 2.7。我正在尝试编译一个 python 脚本,该脚本假设从加速度计读取数据,但它给出了error: (87, 'DeviceIoControl', 'The parameter is incorrect.')错误。

我在设备管理器中找不到加速度计,但我知道它已正确安装,因为其他应用程序可以使用它,但我想我无法访问它?

什么可能导致这个问题?我该如何解决?提前致谢。

0 投票
2 回答
2920 浏览

windows - 将驱动器号转换为分区 ID/磁盘 ID

给定驱动器号,如何在不使用注册表的情况下获取OSImage InstallTo 分区 ID磁盘 ID ?