【问题标题】:Delphi - Enumerating SATA IO Port Numbers in WindowsDelphi - 在 Windows 中枚举 SATA IO 端口号
【发布时间】:2009-03-21 06:53:35
【问题描述】:

给你一个新的。我正准备帮助另一个程序员将​​他的程序从 C# 移植到 Delphi。我无法真正阅读 C#,此时他也没有向我发送实际源代码,所以从讨论中我认为我将在一个时间点从一个函数处理大部分问题。

我需要能够获取连接到系统的所有 SATA 设备(我相信我的意思是设备)的 IO 端口号。我知道 WMI 不会这样做,所以我不确定从哪里开始。我知道这个应用程序的 C# 版本使用了一个基本上解析注册表的 C# 类。我一直很讨厌直接从注册表中读取。如果可能的话,我觉得从 windows api 或相关的信息获取信息在 windows 版本之间更可靠。

【问题讨论】:

  • 请问您有什么问题?
  • 一是看不懂源码,二是没有源码,移植代码是不是很奇怪?
  • mghie 问题就在那里“我需要能够获取连接到系统的所有 SATA 设备(我相信我的意思是设备)的 IO 端口号。”如果您需要我详细说明...我不确定我可以但我会尝试。
  • @Brian:您可能会同意 a) 就语法而言,这不是一个真正的问题,并且 b) 这句话完全隐藏在文本中。如果你把这个问题变成一个真实的问题,你可能会得到更好的答案。尤其是第一段似乎完全是多余的。

标签: delphi io port pascal sata


【解决方案1】:

如果原件正在读取注册表,而您正在移植该功能,那么读取注册表对我来说似乎是一个完全有效的解决方案?

顺便说一下,Delphi 有来自单元 registry.pas 的类 TRegistry。您可以使用它来读取和写入注册表。默认情况下,您要求获得 vista 上的所有权限(读/写..),这可能是个问题,因此如果您打算只读,请务必打开只读。

关键值:

KEY_READ
KEY_WRITE 
KEY_EXECUTE
KEY_ALL_ACCESS

这些实际上是由基本值组成的集合:

KEY_QUERY_VALUE       
KEY_SET_VALUE         
KEY_CREATE_SUB_KEY    
KEY_ENUMERATE_SUB_KEYS
KEY_NOTIFY     
KEY_CREATE_LINK
KEY_WOW64_32KEY
KEY_WOW64_64KEY
KEY_WOW64_RES

【讨论】:

  • 你问我没见过的端口代码是否奇怪。对我来说不,我只是通过查看它的工作原理,使用我自己的代码在功能上“移植”了他的另一个应用程序。我也使用外部调试器将没有源的程序移植到帕斯卡。我为我需要的旧命令行应用程序这样做。
  • 我还想说我不应该对 vista 有太多问题。我编写的其他应用程序通常会做需要提升的低级别事情,所以我只是在其中添加一个清单来要求/请求提升。虽然注册表操作应该是只读的,但它的 likley vista 不会喜欢 UAC 下的这个应用程序
猜你喜欢
  • 1970-01-01
  • 2011-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-04
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多