问题标签 [hdd]
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.
windows-vista - 在 Vista Ultimate 64 位上获取 HDD(而非卷)序列号
我曾经想在不使用 WMI 的情况下获取 HDD 序列号,结果找到了。我在 StackOverFlow.com 上找到并发布的代码在 XP 和 Vista 的 32 位 Windows 上运行良好。当我尝试在 64 位操作系统(特别是 Vista Ultimate 64)上获取序列号时,问题才开始。该代码始终返回 String.Empty 或 Space。
有人知道如何解决这个问题吗?
编辑:
我使用了 Dave Cluderay 建议的工具,结果很有趣:
这是 DiskId32 在 Windows XP SP2 32 位上的输出:
并且 DiskId32 在 Windows Vista Ultimate 64 位上运行:
请注意 Vista 上的信息要少得多,以及如何不返回序列号。另一个工具 EnumDisk 将我在 Vista 上的硬盘称为“SCSI”,而不是 Windows XP 上的“ATA”。
有任何想法吗?
编辑2:
我正在发布 EnumDisks 的结果:
在 Windows XP SP2 32 位上:
在 Vista 64 Ultimate 上:
c# - 尝试通过 WMI 获取 CPU ID 时生成“未找到”异常
我正在使用此代码来获取处理器 ID:
我正在运行 Windows 7 32 位 Visual Studio 2008。不幸的是,mc.GetInstances() 方法调用引发了“未找到”异常。
这是一段类似的代码(获取硬盘序列号):
此代码也失败 - “disk.Get()”方法引发“无效类”异常。
我已经在关闭和打开 UAC 的情况下运行此代码 - 没有任何帮助。
我究竟做错了什么?
java - 使用 java.io 高效序列化原生 java 数组
我必须对 Java 序列化提出疑问。
我只是使用 FileOutputStream 和 BufferedOutputStream 结合 Dataoutputstream 将 10 个大小为 int[] array = new int[2^28] 的数组写入我的硬盘(我知道这有点大,但我需要它) . 在每次序列化之前,我创建一个新的 FileOutputstream 和所有其他流,然后我关闭并刷新我的流。
问题:第一次序列化大约需要 2 秒,之后它会增加 tp 17 秒并保持在这个级别。这里有什么问题?如果我进入代码,我可以看到 FileOutputStreams 为 writeByte(...) 花费了大量时间。这是由于硬盘缓存(完整)吗?我怎样才能避免这种情况?我可以清除它吗?
这是我的简单代码:
其中 dataOut.write(int[], 0, end)
和 `protected void checkBuf(int need) throws IOException {
BufferedDataOutputStream 扩展了 BufferedOutputStream 与 fit 框架一起提供。它只是将 BufferedOutputStream 与 DataOutputStream 结合起来,以减少编写大数组时的方法调用次数(这使其速度更快......最多 10 倍......)。
这是输出:
起始基准
开始运行 0
2.001972271
开始运行 1
1.986544604
开始运行 2
15.663881232
开始运行 3
17.652161328
开始运行 4
18.020969301
开始运行 5
11.647542466
开始运行 6
为什么时间会增加这么多?
谢谢,
埃斯
c++ - 尝试编写一个综合方法来使用 C++ 确定 Windows 驱动器类型
我遇到了大量非托管 C++/MFC 示例,这些示例显示人们试图通过其 DOS 路径确定驱动器的类型,但对于应该如何完成似乎存在很多困惑。所以我试图将所有信息整合到一个功能中,并做微软很久以前应该为我们做的事情。
我基本上需要将所有现代驱动器分类为:
- 固定驱动器
- 可移动驱动器
- 媒体驱动器
- 其他(见代码中的解释)
有人可以在下面检查我的代码吗?
linux - 使用 SATA HDD 作为块设备
我对 Linux 内核完全陌生,所以我可能把事情搞混了。但任何建议都会对我有所帮助;)
我有一个通过 PCIe SATA 卡连接的 SATA HDD,我尝试在块设备上使用read
和喜欢。write
我还希望将数据断电保存在 HDD 上 - 不缓存。最后我必须分析我在每个 linux 堆栈层中浪费了多少时间。而是一步一个脚印。
目前,我尝试open
使用 *O_DIRECT* 访问设备。但是我真的不明白在哪里可以找到该设备。它显示为/dev/sdd
,我创建了一个分区/dev/sdd1
。
open
并read
在分区/dev/sdd1
工作。write
*O_DIRECT* 失败(但我确定我有正确的块大小)open
read
并write
呼吁/dev/sdd
完全失败。- 是否有另一个文件
/dev/
代表我在块层上的设备? - 我的错误和错误假设是什么?
这是我当前的测试代码
编辑:我在电源架构上使用 3.2 内核 - 如果这很重要。
非常感谢您的宝贵时间,Fabian
linux - 从具有 O_DIRECT 的 HDD 读取()失败并显示 22(EINVAL,无效参数)
我想read()
从 SATA HDD做一个基本的/dev/sdd
。Awrite()
似乎工作。也可以在没有标志的情况read()
下工作。我读过,它必须与块大小对齐。所以我用它来获取块大小:write()
O_DIRECT
如您所见,我有根。硬盘通过 PCIe SATA 卡连接,并向lspci -vv
我显示它使用基本的 ahci ( drivers/ata/ahci.c
) 驱动程序。我在 64 位 Power Architecture 上使用 3.2.0 Linux 内核。
这是我的代码:
输出是:
编辑:我已经按照 Brett Hale 的回答更新了我的来源。不幸的是,我仍然得到错误。我找出块大小的方法可以吗?我做对了吗?
非常感谢您阅读,
费边
c++ - Windows XP 上用于高级格式硬盘的物理扇区大小
我需要检索硬盘的物理扇区大小,以确定硬盘是否为高级格式,在 Windows XP 中。
我尝试使用STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR
,但它在 Windows XP 中不兼容。我使用的任何方法都将返回 512 而不是 4096,其中包括 WMI,其中返回的唯一值是 512。
我一直在用 C++ 进行编码,如果有人能指出一种方法来帮助我找到实际的物理扇区大小,我将非常感激。
vb6 - 如何获取当前的硬盘类型?
我找到了一种在 vb6 中获取硬盘序列号的方法。但它需要从中选择一个选项
- 初级主人
- 主从
- 二级大师
- 次要奴隶
但我想自动选择一个选项。自动选择逻辑是,
假设我有 4 个具有上述 4 种类型的 HDD。并且逻辑将选择加载当前系统的硬盘类型。
我真的不知道如何检测当前系统是哪种硬盘类型。请帮忙。
这是我用来选择硬盘序列号的类。HDSN 等级
php - 注意:未定义的偏移量:2 或者如何一直获取硬盘空间
这一行给了我那个错误
我从http://www.installgentoo.net/获得了这段代码, 它显然对他们有用。我正在使用 Windows,他们可能正在使用 linux
如果这是一个 Windows 问题,我怎么能做一些适用于 Windows 和 linux 的东西(它总是得到正确的 HDD,所以我不使用类似的东西,disk_total_space("C:")
因为所有的网络服务器可能都没有它在 C 驱动器上。
如果您想要我正在使用的方法