Delphi - Изброяване на номерата на SATA IO портове в Windows

Нова за вас. Подготвям се да помогна на друг програмист да пренесе програмата си от C# към Delphi. Наистина не мога да чета C#, нито той ми е изпратил действителен източник на този етап, така че от дискусията мисля, че ще се справя с повечето от това от гледна точка на една функция във време.

Трябва да мога да получа номерата на IO портове за всички SATA устройства (мисля, че имам предвид устройства), свързани към системата. Знам, че WMI няма да го направи, така че не съм сигурен откъде да започна с това. Знам, че C# версията на това приложение използва C# клас, който основно анализира системния регистър. Винаги съм се притеснявал да чета директно от системния регистър. Чувствам, че получаването на информация от windows api или свързано е по-надеждно между версиите на windows, ако е възможно.


person Brian Holloway    schedule 21.03.2009    source източник
comment
Какъв е вашият въпрос, моля?   -  person mghie    schedule 21.03.2009
comment
Не е ли странно да пренасяте код, когато първо не можете да прочетете източника и второ, нямате източника?   -  person Toon Krijthe    schedule 21.03.2009
comment
mghie въпрос е точно там. Трябва да мога да получа номерата на IO портове за всички SATA устройства (мисля, че имам предвид устройства), свързани към системата. Ако трябва да ви разясня... не съм сигурен, че мога, но бих опитал.   -  person Brian Holloway    schedule 22.03.2009
comment
@Brian: Вероятно ще се съгласите, че а) това не е истински въпрос, що се отнася до граматиката, и б) че това изречение е напълно заровено в текста. Просто може да получите по-добри отговори, ако направите това истински въпрос. Особено първият параграф изглежда напълно излишен.   -  person mghie    schedule 22.03.2009


Отговори (1)


Ако оригиналът чете регистъра и вие пренасяте функцията, четенето на регистъра ми изглежда като напълно валидно решение?

Между другото, Delphi има клас TRegistry от модула registry.pas. Можете да го използвате, за да четете и пишете в регистъра. По подразбиране вие ​​искате всички права (четене/запис...) на 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
person Toon Krijthe    schedule 21.03.2009
comment
Питате дали е странен кодът на порта, който не съм виждал. За мен не, пренесох функционално още едно от неговите приложения, използвайки моя собствен код, просто като видях как работи. Пренасям програми без източник към паскал, като използвам и външен дебъгер. Правя това за старите приложения на командния ред, които ми трябват. - person Brian Holloway; 22.03.2009
comment
Също така исках да кажа, че не трябва да имам много проблеми с Vista. Други приложения, които пиша, обикновено правят неща от ниско ниво, изискващи повишение, така че просто хвърлям манифест там, за да изисквам/питам за повишаване. Докато операциите на системния регистър трябва да са само за четене така или иначе, вероятно vista няма да хареса това приложение под UAC - person Brian Holloway; 22.03.2009