Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[15907] Re:Re:이렇게까지.... 감사합니다..
첫눈 [hadugo] 1643 읽음    2017-07-26 13:01
이렇게까지 신경써서 답변해 주시다니 정말 감사합니다.
추가질문을 더 드리고 싶었는데 너무 고생스럽게 테스트해서 답변해 주시니
너무 죄송스러워 감히 말을 꺼낼 엄두가 안나네요.
정말 감사합니다.

빌더(TWx) 님이 쓰신 글 :
: 첫눈 님이 쓰신 글 :
: : 첨부파일은 GPU-Z이라는 프로그램입니다.
: :
: : 이 프로그램을 실행하면 장착되어 있는 내장그래픽카드는 물론이고 추가로 장착된 그래픽카드의 모든 정보를 확인할 수 있습니다.
: :
: : 제가 이 기능을 구현해야 하는데요.
: :
: : 구글링을 해 보니 NVidia그래픽카드는 nvcpl.dll을 이용해야 하고, AMD제품은 AMD에서 제공하는 API 를 이용해야 한다고 하더군요.
: :
: : 하지만 Intel과 같은 내장그래픽카드에 대한 정보는 전혀 없습니다.
: :
: : 그밖에 다른 제조사의 그래픽카드에 대한 정보도 전혀 없구요.
: :
: : 하지만 GPU-Z에서 보면 어떤 제품이든 관계 없이 모든 정보를 다 보여주는 것을 보면 제조사에서 제공하는 API를 이용하지 않고
: : 공통으로 사용할 수 있는 어떤 방법이 있을듯 한데 혹시 도움을 주시면 감사하겠습니다.
:
:
:
: 답변:
:
:
: 칩 마다 하드웨어 구조가 다 다르므로 GPU 로우레벨을 공통적으로 사용할 수 있는 방법이 있지는 않아요.
: 유저모드에서 사용할 수 있는 API를 제조사에서 제공해주면 그걸 이용할 수 있고
: 그렇지 않으면 디바이스 드라이버를 만들어서 커널모드에서 칩을 직접 액세스 할 수 밖에 없습니다.
:
: GPU-Z라는 프로그램을 잠깐 리버스 엔지니어링으로 분석해 보니까...
:
: GPU-Z.exe 라는 프로그램이 인스톨 된 상태에서 실행파일 크기가 4메가 정도이지만
: 사실 이 놈은 실행파일 크기를 줄이기 위해서 Pack 되어 있고, 이걸 끄집어 내보면
: 실제 실행파일의 크기는 14 MB에 이릅니다.
:
:
:
: 리버스 엔지니어링으로 분석해 본 결과, GPU-Z 프로그램은...
: 실행파일 안에 GPU-Z.sys라는 커널모드 디바이스 드라이버를 갖고있다가
: 사용자계정의 AppData/Local/Temp 디렉토리에 풀어놓고 로드하는 구조를 갖고 있습니다.
:
: C:\\Users\\사용자계정\\AppData\\Local\\Temp\\\\GPU-Z.sys"
:
: <Visual Studio 2017을 이용해서 GPU-Z.exe를 인젝션>
:
:
:
:
:
:
: 디바이스 드라이버 뿐만 아니라, 실행파일 안에 몇개의 별개의 프로그램도 같이 Embedded 되어 있는 상태인데
: 아마도 Intel Platform Analysis Library를 이용해서 만든 별개의 프로그램으로 보이는데, 이 놈도 같이 Temp 디렉토리에서
: 실행시킵니다. (캡쳐한 그림에선 가려져서 잘 안보이지만, Query_External_xxxxxxxx.exe 라는 네임 데코레이션으로)
:
: nvidia GPU일 경우에는 일전에 답변했던 대로.. 제조사에서 제공하는 dll을 로드해서
: nvapi_QueryInterface 주소를 GetProcAddress로 얻어서 유저모드 dll API를 호출해서 사용하는 구조로
: GPU-Z.exe도 마찬가지로 nvidia에서 제공하는 dll을 이용하도록 만들어져 있습니다.
:
: 결국, 칩 데이타 시트를 참고해서 디바이스 드라이버를 만들어야 하는 경우도 있다는 걸 인식하고 있어야 하죠.
:
: 전체를 다 분석해 본 건 아니지만... 30분 정도 리버스엔지니어링으로 살펴본 결론은 그러네요.
:

+ -

관련 글 리스트
15902 GPU-Z이라는 프로그램과 같이 그래픽카드의 정보와 현제 상태를 구하는 방법 좀 알려주세요. 첫눈 1646 2017/07/25
15905     Re:GPU-Z이라는 프로그램과 같이 그래픽카드의 정보와 현제 상태를 구하는 방법 좀 알려주세요. 빌더(TWx) 2113 2017/07/25
15907         Re:Re:이렇게까지.... 감사합니다.. 첫눈 1643 2017/07/26
15908             Re:Re:Re:이렇게까지.... 감사합니다.. 1515 2017/07/27
15909                 Re: D3DKMTQueryStatistics() 라는 Undocumented API 빌더(TWx) 1793 2017/07/27
15910                     Re:Re: D3DKMTQueryStatistics() 라는 Undocumented API 1686 2017/07/27
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.