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
[15915] Re:Re:Re:Re:감사합니다.
첫눈 [hadugo] 1941 읽음    2017-07-28 15:55
빌더님 덕분에 원하는 것을 완성했습니다.

진심으로 감사드립니다.

빌더(TWx) 님이 쓰신 글 :
: typedef enum
: {
:     NVAPI_THERMAL_TARGET_NONE          = 0,
:     NVAPI_THERMAL_TARGET_GPU           = 1,
:     NVAPI_THERMAL_TARGET_MEMORY        = 2,
:     NVAPI_THERMAL_TARGET_POWER_SUPPLY  = 4,
:     NVAPI_THERMAL_TARGET_BOARD         = 8,
:     NVAPI_THERMAL_TARGET_VCD_BOARD     = 9,
:     NVAPI_THERMAL_TARGET_VCD_INLET     = 10,
:     NVAPI_THERMAL_TARGET_VCD_OUTLET    = 11,
:     NVAPI_THERMAL_TARGET_ALL           = 15,
:     NVAPI_THERMAL_TARGET_UNKNOWN       = -1,
: } NV_THERMAL_TARGET;
:
: typedef struct
: {
:     int   version;
:     int   count;
:
:     struct
:     {
:         int   controller;
:         int   defaultMinTemp;
:         int   defaultMaxTemp;
:         int   currentTemp;
:         NV_THERMAL_TARGET  target;
:     } sensor[3];
:
: } NV_GPU_THERMAL_SETTINGS;
:
: typedef void *(*NVQueryInterface)(unsigned int offset);
: typedef int (*NVInitialize)();
: typedef int (*NVEnumPhysicalGPUs)(int **handles, int *count);
: typedef int (*NVGetThermalSettings)(int *handle, int sensorIndex, NV_GPU_THERMAL_SETTINGS *temp);
:
: NVQueryInterface      nvQueryInterface;
: NVInitialize          nvInitialize;
: NVEnumPhysicalGPUs    nvEnumPhysicalGPUs;
: NVGetThermalSettings  nvGetThermalSettings;
:
: HMODULE hNvDll = NULL;
: int     gpuCount = 0;
: int     *gpuHandles[64] = {NULL};
: NV_GPU_THERMAL_SETTINGS nvgts;
: //---------------------------------------------------------------------------
: __fastcall TForm1::TForm1(TComponent* Owner)
:     : TForm(Owner)
: {
:     hNvDll = LoadLibraryA("nvapi.dll");
:    if (hNvDll == NULL)
:    {
:        ShowMessage("Couldn't find nvidia dll");
:        return;
:    }
:
:   // Interface delegtion...
:    nvQueryInterface = (NVQueryInterface)GetProcAddress(hNvDll, "nvapi_QueryInterface");
:    nvInitialize = (NVInitialize)nvQueryInterface(0x0150E828);
:    nvEnumPhysicalGPUs = (NVEnumPhysicalGPUs)nvQueryInterface(0xE5AC921F);
:    nvGetThermalSettings = (NVGetThermalSettings)nvQueryInterface(0xE3640A56);
:
:    if (nvInitialize == NULL || nvEnumPhysicalGPUs == NULL ||
:        nvEnumPhysicalGPUs == NULL )
:    {
:        ShowMessage("Couldn't get functions in nvidia dll");
:        FreeLibrary(hNvDll);
:        hNvDll = NULL;
:        return;
:    }
:
:    nvInitialize();
:    nvEnumPhysicalGPUs(gpuHandles, &gpuCount);
:
:    nvgts.version = sizeof(NV_GPU_THERMAL_SETTINGS) | (1<<16);
:    nvgts.count = 0;
:    nvgts.sensor[0].controller = -1;
:    nvgts.sensor[0].target = NVAPI_THERMAL_TARGET_GPU;
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::Timer1Timer(TObject *Sender)
: {
:     int  gpuTemp;
:
:     if(hNvDll != NULL)
:     {
:         nvGetThermalSettings(gpuHandles[0], 0 ,&nvgts);
:
:         String s;
:         s.printf(L"GPU 현재온도 = %d\n", nvgts.sensor[0].currentTemp);
:         Caption = s;
:     }
: }
:
:
: 답변:
:
: 지난 답변에서 nvapi.dll .. nvapi_QueryInterface() 을 이용한다고 답변했었는데...
: 예전에 답변한 C# 코드 참고해서 포팅하세요. 이만 휴가...
:
:

+ -

관련 글 리스트
15911 그래픽카드 온도를 구하는 소스코드인데 에러가 납니다. 첫눈 1780 2017/07/27
15912     Re:그래픽카드 온도를 구하는 소스코드인데 에러가 납니다. 빌더(TWx) 2185 2017/07/28
15913         Re:Re:잘되네요. 뭐가 잘못된건가요? 첫눈 1786 2017/07/28
15914             Re:Re:Re:잘되네요. 뭐가 잘못된건가요? 빌더(TWx) 2001 2017/07/28
15915                 Re:Re:Re:Re:감사합니다. 첫눈 1941 2017/07/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.