• <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
            之所以有此一問(wèn), 是因?yàn)椴煌姹镜?Windows, 甚至同一版本的不同 SP, 其內(nèi)核數(shù)據(jù)結(jié)構(gòu)是不同的, 而開(kāi)發(fā)驅(qū)動(dòng)程序經(jīng)常要直接操縱這些內(nèi)核數(shù)據(jù)結(jié)構(gòu), 就必須得到 Windows 版本的詳細(xì)信息.

            如何在內(nèi)核里取得 windows 詳細(xì)版本號(hào)始終是困擾驅(qū)動(dòng)開(kāi)發(fā)人的一個(gè)不大不小的問(wèn)題, 因?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 閱讀(3801) 評(píng)論(0)  編輯 收藏 引用

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


            久久久久夜夜夜精品国产| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 狠狠色丁香久久婷婷综合图片 | 国产A级毛片久久久精品毛片| 久久亚洲AV成人无码电影| 麻豆成人久久精品二区三区免费| 7777久久亚洲中文字幕| 色综合久久中文字幕综合网| 久久夜色精品国产噜噜噜亚洲AV | 人妻久久久一区二区三区| 久久免费小视频| 色偷偷偷久久伊人大杳蕉| 欧美日韩精品久久久免费观看| 久久久亚洲裙底偷窥综合| 国产精品伦理久久久久久| 热re99久久6国产精品免费| 亚洲国产精品无码久久九九| …久久精品99久久香蕉国产| 久久久久国产精品嫩草影院| 久久综合视频网站| 99久久夜色精品国产网站| 亚洲国产美女精品久久久久∴| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 精品国产日韩久久亚洲| 国产午夜福利精品久久| 色诱久久久久综合网ywww| 亚洲精品99久久久久中文字幕 | 久久综合欧美成人| 国产精品无码久久久久久| 午夜天堂av天堂久久久| 午夜精品久久久久久| 久久夜色精品国产www| 国产精品久久久天天影视香蕉 | 香蕉aa三级久久毛片| 国产精品综合久久第一页| 亚洲午夜久久影院| 久久亚洲精品视频| 精品久久久无码中文字幕| 久久久久97国产精华液好用吗| 久久成人永久免费播放| 久久久久久久久久久免费精品|