• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-60  評(píng)論-262  文章-1  trackbacks-0
            之所以有此一問, 是因?yàn)椴煌姹镜?Windows, 甚至同一版本的不同 SP, 其內(nèi)核數(shù)據(jù)結(jié)構(gòu)是不同的, 而開發(fā)驅(qū)動(dòng)程序經(jīng)常要直接操縱這些內(nèi)核數(shù)據(jù)結(jié)構(gòu), 就必須得到 Windows 版本的詳細(xì)信息.

            如何在內(nèi)核里取得 windows 詳細(xì)版本號(hào)始終是困擾驅(qū)動(dòng)開發(fā)人的一個(gè)不大不小的問題, 因?yàn)?PsGetVersion 函數(shù)的最后一個(gè)參數(shù)根本就不起作用, 得不到 SP 版本號(hào), 而 RtlGetVersion 函數(shù)是在 Windows XP 才提供的, 不具通用性.

            因此, 我寫了一個(gè)函數(shù), 將這兩個(gè)函數(shù)封裝在一起, 讓其首先試圖調(diào)用 RtlGetVersion 函數(shù), 如果失敗了, 表明這肯定是 Windows 2000 及以下系統(tǒng), 目前我們一般只支持到 Windows 2000, 至于 undocumented 內(nèi)核數(shù)據(jù)結(jié)構(gòu), Windows 2000 下的都是一樣的, 所以就不做 sp 版本判斷了.

            typedef enum WIN_VER_DETAIL {
                WINDOWS_VERSION_NONE,       //  0
                WINDOWS_VERSION_2K,
                WINDOWS_VERSION_XP,
                WINDOWS_VERSION_2K3,
                WINDOWS_VERSION_2K3_SP1_SP2,
                WINDOWS_VERSION_VISTA,
            } WIN_VER_DETAIL;

            typedef NTSTATUS (NTAPI * PFN_RtlGetVersion)(OUT PRTL_OSVERSIONINFOW lpVersionInformation);

            EXTERN_C WIN_VER_DETAIL GetWindowsVersion()
            {
                UNICODE_STRING ustrFuncName = { 0 };
                RTL_OSVERSIONINFOEXW osverinfo = { sizeof(osverinfo) };
                PFN_RtlGetVersion pfnRtlGetVersion = NULL;

                RtlInitUnicodeString(&ustrFuncName, L"RtlGetVersion");
                pfnRtlGetVersion = MmGetSystemRoutineAddress(&ustrFuncName);

                if (pfnRtlGetVersion)
                {
                    kdprintf("[xxxxxxxx] Using \"RtlGetVersion\"\n");
                    pfnRtlGetVersion((PRTL_OSVERSIONINFOW)&osverinfo);
                }
                else
                {
                    kdprintf("[xxxxxxxx] Using \"PsGetVersion\"\n");
                    PsGetVersion(&osverinfo.dwMajorVersion, &osverinfo.dwMinorVersion, &osverinfo.dwBuildNumber, NULL);
                }

                kdprintf("[xxxxxxxx] OSVersion NT %d.%d:%d sp%d.%d\n",
                    osverinfo.dwMajorVersion, osverinfo.dwMinorVersion, osverinfo.dwBuildNumber,
                    osverinfo.wServicePackMajor, osverinfo.wServicePackMinor);

                if (osverinfo.dwMajorVersion == 5 && osverinfo.dwMinorVersion == 0) {
                    return WINDOWS_VERSION_2K;
                } else if (osverinfo.dwMajorVersion == 5 && osverinfo.dwMinorVersion == 1) {
                    return WINDOWS_VERSION_XP;
                } else if (osverinfo.dwMajorVersion == 5 && osverinfo.dwMinorVersion == 2) {
                    if (osverinfo.wServicePackMajor==0) {
                        return WINDOWS_VERSION_2K3;
                    } else {
                        return WINDOWS_VERSION_2K3_SP1_SP2;
                    }
                } else if (osverinfo.dwMajorVersion == 6 && osverinfo.dwMinorVersion == 0) {
                    return WINDOWS_VERSION_VISTA;
                }

                return WINDOWS_VERSION_NONE;
            }


            posted on 2008-07-23 01:40 free2000fly 閱讀(3785) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            热久久这里只有精品| 久久精品国产99国产精品澳门| 久久精品国产亚洲AV不卡| 欧美粉嫩小泬久久久久久久 | 伊人久久大香线蕉综合影院首页| 久久人与动人物a级毛片| 国产午夜精品久久久久免费视 | 91精品国产91久久久久福利| 一本大道加勒比久久综合| 亚洲精品99久久久久中文字幕| 久久精品aⅴ无码中文字字幕重口| 国产精品xxxx国产喷水亚洲国产精品无码久久一区| 91超碰碰碰碰久久久久久综合| 国内精品久久久久久久久电影网 | 人妻精品久久久久中文字幕| 色综合久久久久无码专区| 久久综合久久鬼色| 日韩精品国产自在久久现线拍| 国产69精品久久久久久人妻精品 | 久久久精品人妻一区二区三区蜜桃| 久久亚洲精品中文字幕三区| 亚洲国产另类久久久精品黑人 | 韩国免费A级毛片久久| 偷偷做久久久久网站| 九九久久精品无码专区| 国产日产久久高清欧美一区| 亚洲精品乱码久久久久久中文字幕 | 久久久久99这里有精品10| 国内精品久久久久久久涩爱| 久久久久久久尹人综合网亚洲| 亚洲AV日韩精品久久久久| 无码国内精品久久综合88| 亚洲欧美成人久久综合中文网 | 欧美日韩精品久久久免费观看| 97久久精品人人澡人人爽| 久久精品aⅴ无码中文字字幕重口| 亚洲欧美日韩中文久久 | 久久久这里有精品| 国产欧美久久久精品影院| 久久久久亚洲精品日久生情| 中文字幕亚洲综合久久菠萝蜜|