2009-03-21 8 views
0

새 항목 임씨는 다른 프로그래머가 자신의 프로그램을 C#에서 Delphi로 이식 할 수 있도록 준비하고 있습니다. 나는 진정으로 C#을 읽을 수 없다. 또한 그는 나에게 실제 소스를이 시점에서 보냈다. 토론에서 나는이 점을 대부분 한 가지 관점에서 한 가지 관점에서 다루려 할 것이라고 생각한다.Delphi - Windows에서 SATA IO 포트 번호 열거하기

시스템에 연결된 모든 SATA 장치 (장치라고 생각 함)에 대한 IO 포트 번호를 가져올 수 있어야합니다. 나는 WMI가 그렇게하지 않는다는 것을 알기 때문에이 곳에서 어디에서 시작해야할지 모르겠습니다. 이 응용 프로그램의 C# 버전은 기본적으로 레지스트리를 구문 분석하는 C# 클래스를 사용한다는 것을 알고 있습니다. 필자는 항상 레지스트리에서 직접 읽는 것에 대해 icky했다. 가능한 경우 Windows API간에 관련 정보를 얻는 것이 더 안정적이라고 생각합니다.

+0

귀하의 질문에, 무엇하시기 바랍니다인가? – mghie

+0

처음에는 소스를 읽을 수없고 소스가 없는데 포트 코드는 이상하지 않습니까? –

+0

mghie 질문이 바로 있습니다. "시스템에 연결된 모든 SATA 장치에 대한 IO 포트 번호를 얻을 수 있어야합니다. 네가 정교하게 나를 필요로한다면 .. 내가 할 수 있을지 모르지만 나는해볼거야. –

답변

1

원본이 레지스트리를 읽고 있고이 기능을 이식하는 경우 레지스트리 읽기가 완벽하게 올바른 해결책 인 것 같습니다.

그런데 Delphi는 unit registry.pas 클래스 TRegistry를 가지고 있습니다. 이를 사용하여 레지스트리를 읽고 쓸 수 있습니다. 기본적으로 비스타에 대한 모든 권한 (읽기/쓰기 ..)을 요구하고 있으므로 문제가 될 수 있습니다. 읽기만 계획한다면 읽기 전용으로 열어야합니다.

키 값 :

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 
+0

포트 코드가 이상하지 않은지 물어보십시오. 나에게있어, 필자는 코드가 작동하는 방식을 보면서 코드를 사용하여 기능적으로 다른 앱을 "이식"했습니다. 나는 외부 디버거를 사용하여 파스칼에 소스가없는 프로그램을 포팅한다. 내가 필요로하는 오래된 커맨드 라인 앱을 위해 그렇게했다. –

+0

나는 또한 비스타에 대해 너무 많은 문제가 있어서는 안된다고 말하려고했다. 내가 작성하는 다른 앱은 일반적으로 고도가 필요한 낮은 수준의 작업을 수행하므로 높이기를 요구하거나 요청해야합니다. 레지스트리 작업은 어쨌든 readlyly해야 likily 비스타 UAC 에서이 응용 프로그램처럼 실 거예요 동안 –