青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

小默

[zz]DriverEntry

DriverEntry的第一個(gè)參數(shù)是一個(gè)指針,指向一個(gè)剛被初始化的驅(qū)動(dòng)程序?qū)ο螅搶?duì)象就代表你的驅(qū)動(dòng)程序。WDM驅(qū)動(dòng)程序的DriverEntry例程應(yīng)完成對(duì)這個(gè)對(duì)象的初始化并返回。非WDM驅(qū)動(dòng)程序需要做大量額外的工作,它們必須探測(cè)自己的硬件,為硬件創(chuàng)建設(shè)備對(duì)象(用于代表硬件),配置并初始化硬件使其正常工作。而對(duì)于WDM驅(qū)動(dòng)程序,頗麻煩的硬件探測(cè)和配置工作由PnP管理器自動(dòng)完成,我將在第六章討論P(yáng)nP。如果你想知道非WDM驅(qū)動(dòng)程序是如何初始化自身的,參見(jiàn)Art Baker的《The Windows NT Device Driver Book (Prentice Hall, 1997)》、Viscarola和Mason的《Windows NT Device Driver Development (Macmillan, 1998)》。

DriverEntry的第二個(gè)參數(shù)是設(shè)備服務(wù)鍵的鍵名。這個(gè)串不是長(zhǎng)期存在的(函數(shù)返回后可能消失),如果以后想使用該串就必須先把它復(fù)制到安全的地方。

對(duì)于WDM驅(qū)動(dòng)程序的DriverEntry例程,其主要工作是把各種函數(shù)指針填入驅(qū)動(dòng)程序?qū)ο蟆_@些指針為操作系統(tǒng)指明了驅(qū)動(dòng)程序容器中各種子例程的位置。它們包括下面這些指針成員(驅(qū)動(dòng)程序?qū)ο笾?:

  • DriverUnload 指向驅(qū)動(dòng)程序的清除例程。I/O管理器會(huì)在卸載驅(qū)動(dòng)程序前調(diào)用該例程。通常,WDM驅(qū)動(dòng)程序的DriverEntry例程一般不分配任何資源,所以DriverUnload例程也沒(méi)有什么清除工作要做。
  • DriverExtension->AddDevice 指向驅(qū)動(dòng)程序的AddDevice函數(shù)。PnP管理器將為每個(gè)硬件實(shí)例調(diào)用一次AddDevice例程。由于AddDevice例程對(duì)WDM驅(qū)動(dòng)程序特別重要,所以我將在本章下一節(jié)單獨(dú)講述它。
  • DriverStartIo 如果驅(qū)動(dòng)程序使用標(biāo)準(zhǔn)的IRP排隊(duì)方式,應(yīng)該設(shè)置該成員,使其指向驅(qū)動(dòng)程序的StartIo例程。如果你不理解什么是“標(biāo)準(zhǔn)”排隊(duì)方式,不要著急,到第五章你就會(huì)完全明白,許多驅(qū)動(dòng)程序都使用這種方法。
  • MajorFunction 是一個(gè)指針數(shù)組,I/O管理器把每個(gè)數(shù)組元素都初始化成指向一個(gè)啞派遣函數(shù),這個(gè)啞派遣函數(shù)僅返回失敗。驅(qū)動(dòng)程序可能僅需要處理幾種類(lèi)型的IRP,所以至少應(yīng)該設(shè)置與那幾種IRP類(lèi)型相對(duì)應(yīng)的指針元素,使它們指向相應(yīng)的派遣函數(shù)。我將在第五章詳細(xì)討論IRP和派遣函數(shù)。現(xiàn)在,你僅需要知道至少有三種IRP必須處理。

下面是一個(gè)近乎完整的DriverEntry例程:

extern "C"
            NTSTATUS
            DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
            {
            DriverObject->DriverUnload = DriverUnload;							<--1
            DriverObject->DriverExtension->AddDevice = AddDevice;
            DriverObject->DriverStartIo = StartIo;
            DriverObject->MajorFunction[IRP_MJ_PNP] = DispatchPnp;					<--2
            DriverObject->MajorFunction[IRP_MJ_POWER] = DispatchPower;
            DriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL] = DispatchWmi;
            ...												<--3
            servkey.Buffer = (PWSTR) ExAllocatePool(PagedPool, RegistryPath->Length + sizeof(WCHAR));	<--4
            if (!servkey.Buffer)
            return STATUS_INSUFFICIENT_RESOURCES;
            servkey.MaximumLength = RegistryPath->Length + sizeof(WCHAR);
            RtlCopyUnicodeString(&servkey, RegistryPath);
            return STATUS_SUCCESS;									<--5
            }
  1. 前三條語(yǔ)句為驅(qū)動(dòng)程序的其它入口點(diǎn)設(shè)置了函數(shù)指針。在這里,我用了能表達(dá)其功能的名字命名了這些函數(shù):DriverUnload、AddDevice、StartIo。
  2. 每個(gè)WDM驅(qū)動(dòng)程序必須能處理PNP、POWER、SYSTEM_CONTROL這三種請(qǐng)求;應(yīng)該在這里為這些請(qǐng)求指定派遣函數(shù)。在早期的Windows 2000 DDK中,IRP_MJ_SYSTEM_CONTROL曾被稱(chēng)作IRP_MJ_WMI,所以我把系統(tǒng)控制派遣函數(shù)命名為DispatchWmi
  3. 在省略號(hào)處,你可以插入設(shè)置其它MajorFunction指針的代碼。
  4. 如果驅(qū)動(dòng)程序需要訪問(wèn)設(shè)備的服務(wù)鍵,可以在這里備份RegistryPath串。例如,如果驅(qū)動(dòng)程序要作為WMI生產(chǎn)者(見(jiàn)第十章),則需要備份這個(gè)串。這里我假設(shè)已經(jīng)在某處聲明了一個(gè)類(lèi)型為UNICODE_STRING的全局變量servkey
  5. 返回STATUS_SUCCESS指出函數(shù)成功。如果函數(shù)失敗,應(yīng)該返回NTSTATUS.H中的一個(gè)錯(cuò)誤代碼,或者返回用戶(hù)定義的錯(cuò)誤代碼。STATUS_SUCCESS的值為0。

DriverUnload例程

在WDM驅(qū)動(dòng)程序中,DriverUnload例程的作用就是釋放DriverEntry例程在全局初始化過(guò)程中申請(qǐng)的任何資源,但它幾乎沒(méi)什么可做。如果你在DriverEntry中備份了RegistryPath串,應(yīng)該在這里釋放備份所占用的內(nèi)存:

VOID DriverUnload(PDRIVER_OBJECT DriverObject)
            {
            RtlFreeUnicodeString(&servkey);
            }

如果DriverEntry例程返回一個(gè)失敗狀態(tài)代碼,系統(tǒng)將不再調(diào)用DriverUnload例程。所以,不能讓DriverEntry例程出錯(cuò)后產(chǎn)生任何副作用,必須在它返回錯(cuò)誤代碼前消除副作用。

posted on 2009-12-28 20:57 小默 閱讀(527) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): Windows

導(dǎo)航

統(tǒng)計(jì)

留言簿(13)

隨筆分類(lèi)(287)

隨筆檔案(289)

漏洞

搜索

積分與排名

最新評(píng)論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久国产精品久久国产精品| 一区二区av在线| 销魂美女一区二区三区视频在线| 一本色道**综合亚洲精品蜜桃冫| 亚洲精品一区二区三区不| 中日韩在线视频| 亚洲欧美视频在线| 美女脱光内衣内裤视频久久网站| 欧美国产日韩在线| 欧美午夜电影在线观看| 国产日韩欧美二区| 亚洲国产精品成人va在线观看| 亚洲黄色免费| 香蕉免费一区二区三区在线观看 | 国产精品mm| 国产日韩一区| 亚洲三级影院| 久久福利资源站| 亚洲欧洲另类| 亚洲性xxxx| 久久天堂av综合合色| 欧美日韩一区二区三区免费看| 国产日韩欧美综合精品| 99精品99久久久久久宅男| 久久精品日韩| aa级大片欧美三级| 免费久久99精品国产自在现线| 国产精品色网| 99re66热这里只有精品4| 久久精品成人| 99国产精品99久久久久久粉嫩| 欧美一级艳片视频免费观看| 欧美激情久久久久| 黄色亚洲在线| 欧美一区二区三区精品| 欧美精品电影在线| 午夜精品久久久久久久久久久久久| 麻豆精品在线观看| 国产午夜精品久久| 亚洲自拍都市欧美小说| 欧美激情小视频| 久久久久久久久综合| 国产精品香蕉在线观看| 中文国产成人精品| 亚洲三级性片| 欧美国产在线观看| 亚洲国产女人aaa毛片在线| 久久精品免费看| 亚洲一区日本| 国产精品蜜臀在线观看| 亚洲一级黄色av| 99成人在线| 欧美无砖砖区免费| 亚洲一区国产一区| 中文欧美字幕免费| 国产精品入口夜色视频大尺度| 亚洲在线播放电影| 亚洲影院高清在线| 国产精品久久久久久久浪潮网站| 亚洲色无码播放| 一区二区三区日韩在线观看| 欧美吻胸吃奶大尺度电影| 亚洲自拍偷拍视频| 亚洲综合视频1区| 国产亚洲免费的视频看| 久久午夜影视| 男女视频一区二区| 日韩一级大片| 亚洲小说区图片区| 黄网站色欧美视频| 91久久精品美女高潮| 欧美三级第一页| 欧美一区二区三区四区在线观看地址| 亚洲欧美高清| 在线精品视频一区二区三四| 亚洲国产另类精品专区| 欧美午夜激情视频| 久久久久天天天天| 欧美gay视频激情| 亚洲一区二区少妇| 久久精品国产2020观看福利| 亚洲三级电影全部在线观看高清| 日韩视频免费在线观看| 国产三级精品三级| 亚洲国产第一页| 国产精品午夜久久| 欧美激情亚洲另类| 国产精品夜夜夜| 欧美国产一区二区在线观看 | 美女主播一区| 亚洲一区二区三区在线视频| 欧美在线免费一级片| 亚洲美女av黄| 欧美一区二区三区久久精品| 亚洲精品自在在线观看| 国产精品久久久久三级| 狠狠色丁香婷婷综合| 亚洲精品国产精品乱码不99按摩| 国产噜噜噜噜噜久久久久久久久 | 亚洲欧洲精品一区二区三区波多野1战4 | 午夜在线视频观看日韩17c| 久久精品女人天堂| 亚洲午夜电影网| 久久亚洲图片| 久久精品色图| 国产精品国产亚洲精品看不卡15| 久久蜜桃精品| 国产精品h在线观看| 亚洲国产精品va在线看黑人动漫| 国产精品毛片a∨一区二区三区| 亚洲第一二三四五区| 国产在线高清精品| 亚洲综合日韩| 午夜精品福利视频| 欧美日韩在线免费视频| 亚洲国产精品精华液2区45| 激情欧美一区二区| 久久电影一区| 久久精品视频在线| 国产精品中文字幕在线观看| 一区二区三区四区蜜桃| 夜夜精品视频| 欧美日韩国产影院| 亚洲精品免费网站| 99精品久久久| 欧美日韩国产美女| 99国产精品久久| 亚洲天天影视| 国产精品大全| a91a精品视频在线观看| 亚洲少妇最新在线视频| 欧美性视频网站| 亚洲视频在线播放| 午夜精品三级视频福利| 国产精品普通话对白| 亚洲一区二区三区欧美| 性视频1819p久久| 国产美女高潮久久白浆| 欧美在线观看视频一区二区三区| 久久九九99视频| 激情综合自拍| 免费观看日韩av| 亚洲精品麻豆| 午夜欧美大片免费观看| 国产亚洲精品久久久久婷婷瑜伽| 久久国产精品久久精品国产 | 亚洲专区一区| 欧美尤物一区| 国内精品久久久久影院色| 久久久久国色av免费看影院 | 日韩一级裸体免费视频| 国产欧美精品国产国产专区| 欧美成人精品h版在线观看| 亚洲国产精品久久精品怡红院| 亚洲成人在线| 欧美精品xxxxbbbb| 亚洲已满18点击进入久久| 久久综合国产精品| 亚洲免费福利视频| 国产麻豆日韩| 欧美成人免费网站| 亚洲一区自拍| 欧美激情免费在线| 欧美亚洲免费高清在线观看| 在线精品视频一区二区| 欧美午夜激情在线| 久久青青草综合| 一本色道久久加勒比精品| 久久久久国产一区二区| 亚洲免费观看高清在线观看| 国产日产欧美精品| 欧美精品一区二区三区在线播放| 亚洲一区在线观看免费观看电影高清| 狂野欧美激情性xxxx欧美| 日韩一区二区免费高清| 国产精品有限公司| 欧美成人精品在线观看| 亚洲一区二区av电影| 欧美在线网址| 在线视频欧美精品| 一区二区三区在线高清| 欧美区二区三区| 久久久久.com| 亚洲欧美春色| 日韩午夜精品视频| 久久久人成影片一区二区三区观看| 亚洲免费久久| 亚洲电影在线免费观看| 国产日产亚洲精品系列| 国产精品av免费在线观看 | 久久永久免费| 99在线观看免费视频精品观看| 免费观看30秒视频久久| 久久精品成人| 欧美淫片网站| 欧美在线观看视频一区二区| 亚洲视频在线观看网站| 亚洲精品久久视频| 亚洲国产高清自拍| 在线观看的日韩av|