2016-09-01 30 views
1

私が必要とするのは、c++プログラムで検索されたNvidiaドライバの2つのバージョン(368.39など)です。 Windows 7 64bを使用する。x86プログラムでNvidiaドライバのバージョンをプログラマチックに取得するにはどうすればよいですか?

Hereは、NvidiaのNVMLライブラリを使用して64ビットアプリケーションでこれを行う方法です。

ただし、Nvidiaドライバと一緒に配布されるnvml.dllは64ビットのみです。このライブラリを32ビットプログラムに動的にロードする方法はありません。これはあなたのコンピュータが64bitであることを前提としています。私はこれを32bitマシンでテストしていません。

これまでNVMLはこの情報を取得できる唯一のライブラリであるようです。もしあればこれを得るための他の方法はありますか?

答えて

1

".dll"と書かれているので、Windowsを使用していると仮定します。 Windowsでは、必要なハードウェア情報を得るためにWMIを使用できるはずです。ディスプレイアダプタの場合、Win32_VideoController WMIクラスを使用します。これにはdriverversionという文字列フィールドがあります。このフィールドには、必要なものが必要です。

https://msdn.microsoft.com/en-us/library/aa394512(v=vs.85).aspx

+0

問題の最初のリンクに示すように、これは私のNvidiaドライバのファイルバージョンを提供します。私は2つの番号のバージョン識別子が必要です。一方を他方に変換する方法がある場合、または両方の識別子に関連するテーブルを見つけたら私も知りたいと思います。ありがとう。 –

1
// --------------------------------------------------------------------- 

    // (windows) how to get the nvidea driver version? 

    // --------------------------------------------------------------------- 

    #define C(a) {std::cout<<a<<std::endl;} // for easy print out to console 

    template <class T> inline std::string TOSTR(const T fp){ // a macro 
     std::ostringstream o; 
     o.setf(std::ios_base::fixed, std::ios_base::floatfield); 
     o << fp; // << ends; (null-terminator character) 
     return std::string(o.str()); 
    } 

    // --------------------------------------------------------------------- 

    #pragma comment(lib,"nvapi.lib") // needed ! 

    #include <nvapi.h> // needed ! 

    // you have to start nvapi: 

    NvAPI_Status ret(NVAPI_OK); 
    ret = NvAPI_Initialize(); 
    if(ret != NVAPI_OK) { 
     NvAPI_ShortString string; 
     NvAPI_GetErrorMessage(ret, string); 
     printf("NVAPI NvAPI_Initialize: %s\n", string); 
    } 

    NvAPI_Status s; 
    NvU32 v; // version 
    NvAPI_ShortString b; // branch 
    s = NvAPI_SYS_GetDriverAndBranchVersion(&v, b); 
    if(s != NVAPI_OK) { 
     NvAPI_ShortString string; 
     NvAPI_GetErrorMessage(s, string); 
     printf("NvAPI_SYS_GetDriverAndBranchVersion: %s\n", string); 
    } 

    C("Nvidea driver version: " + TOSTR(v)); // app, console output 


// ...hope i can help .... 
関連する問題