Last Updated 2005/07/28
Programming Tips Visual C++ DLL  索 引 
バージョンの取得
2002/04/17

DLL のバージョンの取得は以下のようにする.

LPDLLVER GetDllVersion(LPCTSTR lpszDllName)
{
    BOOL        fRET = FALSE;
    HINSTANCE   hinstDll;
    static      TCHAR       szText[MAX_PATH] = TEXT("Could not load DLL");
    static      DLLVER      dllver;      
    static      DLLVERSIONINFO dvi;

    dllver.pdvi = &dvi;
    dllver.str = szText;
    // Load the DLL.
    hinstDll = LoadLibrary(lpszDllName);

    if(hinstDll) {
        DLLGETVERSIONPROC pDllGetVersion;

        pDllGetVersion = (DLLGETVERSIONPROC)GetProcAddress( hinstDll, TEXT("DllGetVersion"));

        if(pDllGetVersion) {
            HRESULT           hr;

            ZeroMemory(&dvi, sizeof(dvi));
            dvi.cbSize = sizeof(dvi);

            hr = (*pDllGetVersion)(&dvi);

            if(SUCCEEDED(hr)) {
                wsprintf(   szText, 
                         TEXT("DLL Version = %d.%02d\nBuild# = %d\r\n"), 
                         dvi.dwMajorVersion, 
                         dvi.dwMinorVersion, 
                         dvi.dwBuildNumber);

                switch(dvi.dwPlatformID) {
                  case DLLVER_PLATFORM_WINDOWS:
                    dllver.wintype = MY_WIN95;
                    dllver.success = TRUE;
                    lstrcat(szText, TEXT("Platform is Windows \r\n"));
                    break;

                  case DLLVER_PLATFORM_NT:
                    dllver.wintype = MY_WINNT;
                    dllver.success = TRUE;
                    lstrcat(szText, TEXT("Platform is Windows NT \r\n"));
                    break;

                  default:
                    dllver.wintype=MY_UNKNOWN;
                    dllver.success = TRUE;
                    lstrcat(szText, TEXT("Platform is not defined \r\n"));
                    break;
                }
            } else {
                dllver.success = FALSE;
                lstrcpy( szText, 
                  TEXT("DllGetVersion Failed - Cannot determine DLL version.\r\n"));
            } 
        } else {
            lstrcpy( szText, 
               TEXT("GetProcAddress Failed - The DLL does not implement DllGetVersion."));
            dllver.success=FALSE;
        }

        FreeLibrary(hinstDll);
    } else {
        dllver.success=FALSE;
        lstrcpy(szText, TEXT("Could not load the DLL \r\n"));
    }

    return &dllver;
}


参照
バージョン取得
前後のTips
バージョンの取得

DSS ProgrammingTipsCGI Ver2.02