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

winapi - IOCTL_DISK_VERIFY 做什么?

IOCTL_DISK_VERIFY的文档说:

验证固定磁盘上的指定范围。

但是,这是什么意思?我何时以及为什么需要这样做?

0 投票
1 回答
170 浏览

c# - IOControlCode 要求 UShort,但我们的是 DWORD

我正在为 Windows 10 中的通用应用程序创建自定义设备。我们以前的应用程序(在没有 Universal 的情况下为 XP、7 和 8 运行)一直使用驱动程序控制代码作为DWORD,但Windows.Devices.Custom命名空间使用的函数IOControlCode()使用 ushort。

我们以前使用的函数是:

在此处查看新文档

有没有其他选择或解决方法?

0 投票
1 回答
751 浏览

deviceiocontrol - 使用带有 ATA_PASS_THROUGH_EX 的 DeviceIoControl() 的 SECURITY_SET_PASSWORD 失败

我已经使用 ATA 命令 SECURITY_SET_PASSWORD 在 DeviceIoControl() 函数中尝试了 ATA_PASS_THROUGH_EX 或 ATA_PASS_THROUGH_DIRECT,但它总是因 GetLastError()=87(无效参数)而失败。但是 ATA 命令 IDENTIFY 总是成功的。

操作系统环境:Windows 8.1 64bit,Visual Studio 2010,我的应用程序有管理员权限。

我的目标是在 64 位 Windows 8.1 中发布 SECURITY ERASE UNIt 就像这个页面:https ://ata.wiki.kernel.org/index.php/ATA_Secure_Erase

就像上面的网页一样,当我尝试在 ubuntu live CD 中使用“hdparm”来发布安全擦除时,相同的硬件和相同的 SSD 没有问题。

请您指导我的代码有什么问题?

0 投票
0 回答
1397 浏览

windows - Windows IOCTL:如何写入 SD 卡外部 CSD 寄存器?

谁能指导我如何通过 IOCTL 在 Windows 上写入 SD 卡的外部 CSD 寄存器。

我正在使用 IOCTL_SFFDISK_DEVICE_COMMAND 发送 CMD6(SWITCH) 并修改 eMMC 外部 CSD 寄存器的一些字段。但是 DeviceIoControl 引发错误(ERROR_ACCESS_DENIED),我无法写入寄存器。例如,我试图将 Value=0x00 写入 POWER_OFF_NOTIFICATION 字段,即 ExCSD[34]。按照 linux 中 mmc_ioc_cmd 结构的填充方式

UINT32 value = (MMC_SWITCH_MODE_WRITE_BYTE << 24) | (index << 16) | (val << 8) | EXT_CSD_CMD_SET_NORMAL;

我将命令数据填写为:

我的描述符数据为:

现在,我已经厌倦了两种填充和发送数据的方法:

方法1:将数据字段复制到信息字段中,即:

Method2 : 将 Data 字段复制到 DataBuffer 区域。我的缓冲区被声明为:

因此,

PS:我已经在运行 IOCTL 以成功读取 CID 和 CSD 寄存器的值。此外,外部 CSD 寄存器的内容通过 IOCTL_SFFDISK_MMC_QUERY_EXT_CSD。

任何帮助都感激不尽。

问候

0 投票
0 回答
749 浏览

win-universal-app - 用于从 UWP 应用程序访问设备驱动程序的 UWP API

用于从 UWP 应用程序访问设备驱动程序的 UWP API 是什么?我需要从 UWP 应用程序向驱动程序发送一些 IOCTL 命令。

不使用 Win32 API 是否可行?

0 投票
1 回答
1303 浏览

c# - 使用 C# 在 USB 上创建多个分区

我正在尝试使用 DeviceIOControl 在 USB 中创建多个分区。它总是只创建一个分区。

这是我的源代码

它只创建一个偏移量为零且分区长度为 USB 完整大小的分区。

我从过去两天开始尝试这个,但仍然没有解决方案。

0 投票
0 回答
1376 浏览

c++ - 错误 6:无效的句柄 DeviceIoControl()

我正在尝试创建一个简单的显示器亮度调整。SetMonitorBrightness() 无法在所需的监视器上以某种方式工作(ERROR_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA)所以我正在尝试IOCTL_VIDEO_SET_DISPLAY_BRIGHTNESS.

为了获得句柄,我使用了 CreateFile:

现在,当我尝试访问 DeviceIoControl() 中的句柄时

我明白了Error 6: Invalid Handle

我究竟做错了什么?

0 投票
1 回答
75 浏览

c# - 在 VC 中使用 DevicIOControl#

我创建了两个使用 DeviceIOControl 调用的不同 Visual C# dll,我将它们定义如下:

在第一个 dll 中:

在第二个 dll 中:

但现在我必须将它们作为同一个类中的单个 dll。所以我尝试使用下面的。

作为通用定义并通过将结构转换为字符数组来传递变量。但是驱动程序没有按预期工作

请指导我遵循正确的程序

0 投票
1 回答
656 浏览

c++ - 如何在 C++ 中将驱动器号转换为物理驱动器名称?

我的问题是:给定一个连接到我的 Windows 机器的脱机磁盘,我怎样才能得到它的卷号?

场景:我需要为共享存储创建一个处理程序(使用 CreateFile 函数),以便在 DeviceIoControl 函数中使用它(需要执行 SCSI 保留)。

“CreateFile”函数获取物理驱动器名称(即\.\PhysicalDisk1)或磁盘的卷号(即\.\E:)。

我的问题是,我不想使用物理驱动器名称,只使用磁盘盘符。这在磁盘在线时工作正常,但当磁盘离线时我也必须支持。

有没有办法在设备/磁盘离线时确定字母?我认为有,因为当我让磁盘联机时,Windows 会自动给它正确的字母。因此,如果操作系统知道字母是什么,那么我也必须有一个 API 或工具可以使用。

谢谢,丹尼尔。

0 投票
1 回答
443 浏览

c# - Marshal.GetLastWin32Error() 在 UWP C# 中引发访问被拒绝

我的 UWP 应用程序中有以下代码

但是,当我尝试从 MainPage.xaml.cs 访问它时,我得到了“拒绝访问”的异常。将 Visual Studio 2015 社区切换到管理员模式也没有帮助

我在 Visual Studio 2015 社区中使用 UWP 和 C#