Delphi - Перечисление номеров портов ввода-вывода SATA в Windows

Новый для тебя. Я собираюсь помочь другому программисту перенести его программу с C # на Delphi. Я не могу по-настоящему читать C #, и он еще не прислал мне фактический исходный код, поэтому из обсуждения я думаю, что я собираюсь решать большую часть этого с точки зрения одной функции за раз.

Мне нужно получить номера портов ввода-вывода для всех устройств 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 вопрос прямо здесь. Мне нужно иметь возможность получить номера портов ввода-вывода для всех устройств 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
Вы спрашиваете, странно ли переносить код, которого я не видел. На мой взгляд, нет, ive функционально портировал еще одно из своих приложений, используя мой собственный код, просто посмотрев, как оно работает. Я портирую программы без исходного кода на паскаль, также используя внешний отладчик. Я делаю это для старых приложений командной строки, которые мне нужны. - person Brian Holloway; 22.03.2009
comment
Я также хотел сказать, что у меня не должно быть слишком много проблем с перспективой. Другие приложения, которые я пишу, обычно выполняют низкоуровневые вещи, требующие повышения, поэтому я просто прописываю в них манифест, чтобы требовать / запрашивать повышение. Хотя операторы реестра должны быть доступны только для чтения, в любом случае, похоже, это приложение не понравится под UAC. - person Brian Holloway; 22.03.2009