版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、安裝一個驅動程序 一個后綴是inf的文本文件控制設備驅動程序自動的安裝。inf格式類似于win 3.x下的老式的.ini文件,但是復雜些。一個inf文件允許自動的或者在對話框的幫助下安裝驅動程序文件。 驅動程序安裝結束后對系統(tǒng)產(chǎn)生兩個持久的影響: 1. 描述驅動程序的系統(tǒng)注冊表入口,它的加載順序和任何適當?shù)呐渲脭?shù)據(jù)。 2. 驅動程序文件被拷貝到適當?shù)南到y(tǒng)路徑。 inf文件是影響這些改變的標準的機制,它可以提供定制安裝。 使用inf文件自動安裝 inf文件隨著硬件和驅動程序一起提供,inf文件的結構和內容是驅動程序作者的責任。 inf文件結構 inf文件是被分(section)成幾個部分的文本文
2、件,每個部分被指定一個標識符號它被中括號()括起來一些部分的命名是必須的而其它部分是驅動程序特定的每個部分是一些安裝動作或者連接或者列舉其它部分 文件中各個部分的順序是不重要的因為每個部分都是被命名和連接的一個部分繼續(xù)直到另一個部分或者遇到文件結束每個部分的標識符號是獨一無二的名字為了保持與win98的兼容它的長度被限制在28個字符之內可以包含下劃線和圓點字符在引用整個名字的前提下可以包含空格字符 文件內容的一般格式如下: entry = value , value. entry是指令關鍵詞或者文件名value是entry被應用的屬性 entry或者value名字可以指定為一個使用百分號(%)
3、的代替一些具體數(shù)據(jù)的字符串分割inf文件的strings提供一個特殊語言id的值。 version 部分 一個有效的inf文件從一個命名為version的部分開始,它像一個inf文件的頭和標識。 entry value signature “$windows nt$ $windows 95$ $chicago$的其中一個 class 驅動程序的整個家族的類名一些名字是預先確定的例如net或者display classguid 一個類的獨一無二的guid provider inf文件提供者的名字 layoutfile 只有在系統(tǒng)支持的inf文件中使用oem支持的inf文件用sourcedisks
4、names 和 sourcedisksfiles代替 driverver mm/dd/yyyy,x,y,v,z,必須的條目包含可選的版本信息 表15.1. version部分的條目 manufacturers部分 另一個必須的部分是manufacturers這個部分的條目列出了可以使用這個inf文件安裝的設備和驅動程序條目的形式是: manufacturer=model manufacturer列出被安裝的硬件的制造商的inf文件的唯一名字model提供指向inf文件中另一個進一步安裝這個模型的部分的指針 models 部分 羅列在manufacturers部分的每一個模型在文件中必須有相應的
5、部分model部分的每個條目的形式是: device-description=install-section-name,hw-id,compatible-id. device-description描述了設備模型的列表和一個短描述這個字符串在安裝的時候在對話框中提供給用戶因此它需要提供多種語言的文本 install-section-name的值參考ddinstall部分也描述了inf文件的另一個進一步安裝的部分hw-id是硬件設備在pnp兼容的總線上聲明的時候返回的pnp標識符號例如usbvid_045e&pid_00b標識微軟hid(human input device)的usb鍵盤設備co
6、mpatible-id可以是任何表示用于任何的包含在列表中的相同安裝腳本的數(shù)值 ddinstall 部分 它的名字獨一無二的指定從models部分列出的每個制造商的每個模型 addreg條目在語法上是必須的copyfiles條目對于ddinstall部分是重要的它的形式是: copyfiles=file-list-section,file-list-section. 或者 copyfiles=filename 前者是更普通的版本它允許一個指向另一個包含一個安裝文件列表的部分的指針然而對于簡單的驅動程序的安裝可以直接的使用文件名 entry value driverver mm/dd/yyyy,
7、x,y,v,z必須的條目包含可選擇的版本號碼 copyfiles 另一個指定需要復制的文件列表的部分或者一個單獨的有”為前綴的文件名 addreg 必須的另一個包含需要的注冊表信息的部分 include 指向其它的inf文件名指針列表 needs include條目的子集列出了它的inf文件中需要的部分 delfiles 指定另一個需要刪除的文件列表的部分(一般是升級的目的) renfiles 指定另一個需要重命名的文件列表的部分(一般是存儲安裝之前的狀態(tài)) delreg 指定另一個需要刪除的系統(tǒng)注冊表信息的部分 profileitems 指定另一個需要更改系統(tǒng)開始菜單的部分 表15.2. d
8、dinstall部分條目 copyfiles部分 inf文件的copyfiles部分是唯一的名字并且copyfiles的指示器在ddinstall部分它的條目的形式是: destination-filename,source-filename,temp-filename,flag 二進制值 符號名 描述 0x0400 copyflg_replaceonly 如果已經(jīng)有目標文件則復制 0x0800 copyflg_nodecomp 不解壓直接復制 0x0008 copyflg_force_file_in_use 復制源文件為臨時的名字強制重新激活 重命名臨時文件 0x0010 copyflg_n
9、o_overwrite 不替換已存在的文件 0x1000 copyflg_replace_boot_file 文件是系統(tǒng)加載的一部分強制重新激活 0x2000 copyflg_noprune 強制復制甚至安裝者認為不需要 0x0020 copyflg_no_version_dialog 不重寫更新的文件 0x0004 copyflg_noversioncheck 總是重寫目標文件 0x0040 copyflg_overwrite_ older_only 重寫老的目標文件 0x0001 copyflg_warn_if_skip 如果用戶跳過文件則警告 0x0002 copyflg_noskip
10、不允許用戶跳過文件 表15.3. copyfiles flag的定義 destination-filename是需要復制的文件名如果與源文件名不同source-filename必須被指定temp-filename在win98中是為新文件指定一個中間的文件名直到系統(tǒng)重新激活對于win2000來說它是無用的 flag值指定新的目標文件的部署這些值可以or起來使它有多個性質應該確認沒有互斥的項目 因為copyfiles條目的語法不包含指定源文件的磁盤或者路徑選項所以必須使用其它的inf文件的部分sourcedisksnames和sourcedisksfilescopyfiles是復制的源文件名復制的
11、目標則在destinationdirs部分 addreg部分 inf文件的addreg部分是唯一的名字并且引用addreg的指示器在ddinstall部分這個部分的目的是提供在系統(tǒng)注冊表中添加或者修改條目形式是 reg-root,subkey,value-name,flags,value reg-root是注冊表根的縮寫子鍵描述根鍵下的鍵名使用反斜線字符()分開子鍵例如softwarew2kdriverbook driversetting是有效的hkcu或者hklm根鍵的子鍵 縮寫 意義 hkcr hkey_classes_root hkcu hkey_current_user hklm hk
12、ey_local_machine hku hkey_users hkr 設備安裝的硬件子鍵 表15.4. addreg reg-root縮寫的意義 value-name指定被添加或者修改注冊表值每個系統(tǒng)注冊表鍵包含零個或者多個不同數(shù)據(jù)類型的值注冊表編輯器在右邊的窗格列出了子鍵的值值的名字和值的數(shù)據(jù)也一起顯示出來左邊的窗格僅僅顯示子鍵flags指定數(shù)據(jù)的類型 二進制值 符號 意義 0x00000 flg_addreg_type_sz 以零為結束的字符串 0x00001 flg_addreg_binvaluetype 二進制數(shù)據(jù) 0x00002 flg_addreg_noclobber 不替換現(xiàn)有
13、的值 0x00004 flg_addreg_delvalue 刪除子鍵或者值的名字 0x00010 flg_addreg_keyonly 創(chuàng)建子鍵不顧值 0x00020 flg_addreg_overwriteonly 如果值存在替換它否則什幺也不作 0x10000 flg_addreg_type_multi_sz reg_multi_sz值(數(shù)組) 0x00008 flg_addreg_append 附加到存在的reg_multi_sz數(shù)組 0x20000 flg_addreg_type_expand_sz reg_expand_sz數(shù)據(jù) 0x10001 flg_addreg_type_dw
14、ord dword值 0x20001 flg_addreg_type_none reg_none值 表15.5. addreg flags定義 系統(tǒng)注冊表對于驅動程序安裝的重要性將在后面討論 sourcedisksnames 部分 如果inf文件包含的驅動程序文件分布在多個磁盤上inf文件就必須包含source-disksnames部分這個部分包含文件分布的每個磁盤的人口 diskid=disk-description,tagfile,unused,path diskid是唯一的分配設置中的名字通常磁盤號從1開始disk-description是一個提示用戶合適的磁盤的字符串 tagfile值
15、有雙重的作用確定在安裝過程中用戶提供正確的磁盤tagfile值在安裝過程繼續(xù)進行之前被檢驗如果tagfile文件不存在用戶被重新提示插入正確的磁盤如果agfile值包含.cab的擴展名表示磁盤上的驅動程序文件是壓縮文件 path值是一個以root-relative為磁盤根目錄的驅動程序文件的路徑像tagfile值一樣是可選擇的 sourcedisksfiles 部分 inf文件必須包含一個sourcedisksfiles部分這個部分列出了在安裝驅動程序過程中使用的文件名每個文件都有相應的條目 filename=diskid,subdir,size diskid值是一個sourcedisksna
16、mes部分指定的可以找到文件名的磁盤可選的subdir值指定文件的路徑可選的size值指定解壓縮文件的字節(jié)大小安裝過程使用這個數(shù)據(jù)在嘗試復制文件之前決定目標系統(tǒng)是否適合安裝 destinationdirs部分 這是個必須的提供目標路徑的部分 file-list-section=dirid,subdir 或者 defaultdestdir=dirid,subdir file-list-section是一個被copyfiles的指示器喚起的部分它指定所有的被指示器復制的文件安裝到指定的路徑對于defaultdestdir用于copyfiles中所有的指示器通常與file-list-section聯(lián)
17、合使用 值 意義 12 %windir%system32drivers 對于 windows 2000 %windir%systemiosubsys 對于 windows 98 10 %windir% 11 %windir%system32 對于 windows 2000 %windir%system對于 windows 98 30 根驅動器的根路徑 54 windows 2000的根路徑 01 這個inf文件的路徑 17 inf文件的路徑 20 fonts的路徑 51 假脫機的路徑 52 假脫機的驅動程序路徑 55 打印機處理機路徑 23 color (icm) -1 絕對路徑 21 vie
18、wers路徑 53 user profile路徑 24 應用軟件路徑 25 共享路徑 18 幫助路徑 16406 all usersstart menu 16407 all usersstart menuprograms 16408 all usersstart menuprogramsstartup 16409 all usersdesktop 16415 all usersfavorites 16419 all usersapplication data 16422 program files 16427 program filescommon 16429 all userstemplat
19、es 16430 all usersdocuments 表15.6. destinationdirsdirid定義 ddinstall.services 部分 為了讓復制的文件在目標系統(tǒng)中起驅動程序的作用必須通知服務控制管理器(scm)在win2000中安裝的每個驅動程序在注冊表的hklmsystemcurrentcontrolsetservices下面servicetype值是1表示內核模式的驅動程序starttype指出在系統(tǒng)引導過程中在何時加載驅動程序errorcontrol值決定在驅動程序加載的過程中如果遇到錯誤后如何是好servicebinary值指出驅動程序的位置(.sys文件)但
20、是可能會被遺漏如果二進制文件在%windir%system32drivers路徑并且與hklm.services下面的子鍵名的名字相同的時候就發(fā)生這種情況 ddinstall.services部分條目的形式是 addservice=servicename,flags,service-install- section,eventlog-install-section servicename描述服務的名字典型的是驅動程序的名字(沒有.sys擴展名)二進制值 符號名 意義 0x0002 assocservice 驅動程序是一個fdo不是濾波驅動程序 0x0008 noclobber_displayn
21、ame 不重寫friendly名字 0x0100 noclobber_description 不重寫description 0x0010 noclobber_starttype 不重寫starttype 0x0020 noclobber_errorcontrol 不重寫錯誤控制 表15.7. addservice flags定義 service-install部分和可選的eventlog-install部分喚起附加的控制服務值條目的inf部分(例如servicetype和starttype) serviceinstall 部分 serviceinstall部分它的名字在ddinstall.se
22、rvices部分的addservice條目中唯一指定控制和安裝驅動程序到服務控制管理器 條目 值 displayname 驅動程序的friendly名字顯示在設備管理器中 description 簡短的描述驅動程序或者服務的目的顯示在設備管理器中 servicetype 驅動程序類型: 0x01 -內核驅動程序0x02 -文件系統(tǒng)驅動程序 starttype 何時驅動程序加載: 0 -引導時1 -系統(tǒng)開始時 2 -系統(tǒng)開始后自動加載3 -需要時手動4 -禁止使用 errorcontrol 驅動程序加載時錯誤部署: 0 -忽視所有錯誤1 -顯示錯誤給用戶 2 -使用最后的良好狀態(tài)重新激活忽視錯誤
23、 3 -使用最后的良好狀態(tài)重新激活調試錯誤 servicebinary 驅動程序的全路徑名可能包含dirid值 表15.8. serviceinstall 部分條目 inf 例子 前面介紹的inf文件好象非常復雜這里使用一個例子說明它在下面的例子中inf控制一個由兩個文件組成的驅動程序launcher.sys被復制到系統(tǒng)的驅動程序路徑launcher.hlp被復制到系統(tǒng)的幫助路徑(例如 winntsystem32drivers和winnthelp) version signature=$windows nt$ class=missiles classguid=c9b3d080-6889-11d
24、4-93fc-444553540000 provider=w2kdriverbook driverver=07/04/2000,1.00.2468.1 ; 注釋在分號(;)后面 destinationdirs ; 指定文件復制的目的地 defaultdestdir=12 ; %windir%system32drivers copylaunchhelp=18 ; standard help directory manufacturer w2kdriverbook=mymfgname ; 喚起model部分 mymfgname ; 開始一個models部分 isa missile launcher
25、=installlauncher,isalauncher ; 我們的設備列表 installlauncher ; 開始ddinstall 部分 copyfiles=copylaunchfiles ; 喚起copyfiles 部分. copyfiles=copylaunchhelp ; 另一個是help的 addreg=launchregsection ; 喚起addreg 部分 copylaunchfiles ; 開始copyfiles部分 launcher.sys copylaunchhelp ; help文件的copyfiles部分 launcher.hlp launchregsectio
26、n ; 開始addreg 部分 hkr,parameters,coordinates,flg_addreg_type_dword,0 ; 給設備提供一個是0的dword值 sourcedisksnames ; 這個部分不是真的需要 1=missile launcher driver files ; 因為只有兩個文件并且在同一個磁盤上 sourcedisksfiles launcher.sys=1 ; 類似的因為它們在同一個磁盤上 launcher.hlp=1 ;所以不是真正的需要這個部分 installlauncher.services ; ddinstall.services部分 addse
27、rvice=launcher,2,launchservice launchservice ; 設置scm這樣驅動程序就可以運行了 servicetype=1 ; 驅動程序 starttype=3 ; 需要時手動加載 errorcontrol=1 ; 匯報錯誤 servicebinary=%12%launcher.sys ; 驅動程序路徑 使用inf文件 一旦驅動程序的inf創(chuàng)建完成必須處理它使它有用 手動安裝 手動的處理inf文件必須使用windows的文件管理器選擇inf文件右擊這個文件選擇安裝 在真正的即插即用環(huán)境中插入或者移除設備觸發(fā)相應的驅動程序的安裝加載和卸載因此保留手動的安裝是為了
28、最初的測試和調試驅動程序 自動安裝 當一個即插即用的設備被插入到一個系統(tǒng)數(shù)個子系統(tǒng)相互作用來加載新的驅動程序 1. 當設備被插入硬件使用自動偵測和自動配置告訴總線驅動程序設備出現(xiàn)依賴于總線硬件這可能涉及通知總線驅動程序一個新的總線設備列舉發(fā)生在這一步的最后驅動程序發(fā)現(xiàn)新的設備出現(xiàn)并且有一個指定的設備id 2. 內核模式pnp管理器通知用戶模式pnp管理器一個新的有一個指定id的設備出現(xiàn)在系統(tǒng)中 3. 用戶模式pnp管理器使用win2000的setup api庫為新的設備提供一個類似的驅動程序列表為了合適的驅動程序系統(tǒng)使用新設備的class和model查找系統(tǒng)的inf目錄(例如winntinf)
29、 4. 如果不能找到合適的inf文件系統(tǒng)不進行進一步的動作直到一個有特權的用戶進入系統(tǒng)用戶被提供一個新的硬件向導用戶提供驅動程序的位置和合適的inf文件位置 5. 一旦找到inf文件它被使用cfgmgr api庫處理驅動程序文件和注冊表條目被安裝和修改內核模式的pnp管理器主要執(zhí)行這個步驟 6. 基于inf文件的指導內核模式pnp管理器加載任何低層的濾波驅動程序然后是functional驅動程序最后是高層的驅動程序在堆棧中的高層的驅動程序然后發(fā)送適當?shù)膒np信息包括irp_mn_start_device. 添加/移除硬件向導 在安裝過程中主要的與用戶的交互是添加新硬件向導注意有一個制造商的列表
30、(來自于inf文件的manufacturers部分)和models列表(來自于inf文件的models部分) 通常用戶手動選擇適當?shù)尿寗映绦蛉グ惭b和加載如果驅動程序被安裝它的driverentry和adddevice例程必須仍然有效這樣使請求驅動的硬件滿意新代碼的設置換句話說手動的選擇可能成功的安裝但是初始化是失敗的 class名字和設備ids 即插即用設備自動安裝的過程很大程度上依賴安裝程序的定位合適驅動程序的inf文件和文件中各個部分的能力這個部分文章的目的是解釋class名字和設備ids還有定位inf文件的過程 每個即插即用設備應該有一個唯一的指定硬件模型的標識符號因此提供設備id給即插
31、即用總線硬件和總線驅動程序當然總線驅動程序在新的設備被插入后的很短時間內請求設備id設備id的形式與總線類型有關但是一般看起來是: (例如pciven_1000&dev_0001&subsys_00000000&rev_02) 對于驅動程序代碼一個硬件設備可能匯報多個設備id它是設備功能上的與很多models兼容的陳述因為inf文件的models部分包含一個hw-id值所以尋找與新安裝的設備返回的設備id相匹配的inf文件中的條目非常簡單同樣的inf條目允許相兼容硬件的列表的規(guī)范有附加的設備ids形式如果設備id不能在inf文件中定位精確的匹配就使用兼容的id 另一個為設備定位合適的驅動程序的
32、關鍵元素是安裝類(setup class)的觀念一系列相關的設備可以共享分層的驅動程序 (例如upper或者lower濾波器)甚至在堆棧中個別的驅動程序安裝類被guid 和name唯一的標識微軟定義了一系列驅動程序類新的類可能被定義新的硬件組創(chuàng)建新的組之前必須選擇一個新的guid和class名字 類名 意義 guid 1394 1394火線控制器 6bdd1fc1-810f-11d0-bec7-08002be2092f battery 電池設備 72631e54-78a4-11d0-bcf7-00aa00b7b32a cdrom cd-rom設備 4d36e965-e325-11ce-bfc1
33、-08002be10318 diskdrive 磁盤設備 4d36e967-e325-11ce-bfc1-08002be10318 display 顯示適配器 4d36e968-e325-11ce-bfc1-08002be10318 floppydisk 軟盤控制器 4d36e980-e325-11ce-bfc1-08002be10318 hdc 硬盤控制器 4d36e96a-e325-11ce-bfc1-08002be10318 hidclass 人性化的輸入設備 745a17a0-74d3-11d0-b6fe-00a0c90f57da image 成像設備 6bdd1fc6-810f-11
34、d0-bec7-08002be2092f infrared irda設備 6bdd1fc5-810f-11d0-bec7-08002be2092f keyboard 鍵盤 4d36e96b-e325-11ce-bfc1-08002be10318 mtd 存儲器技術驅動程序 4d36e970-e325-11ce-bfc1-08002be10318 media 多媒體設備 4d36e96c-e325-11ce-bfc1-08002be10318 modem 調制解調器 4d36e96d-e325-11ce-bfc1-08002be10318 monitor 監(jiān)視器 4d36e96e-e325-11
35、ce-bfc1-08002be10318 mouse 鼠標器 4d36e96f-e325-11ce-bfc1-08002be10318 multifunction 多功能設備 4d36e971-e325-11ce-bfc1-08002be10318 network 網(wǎng)絡適配器 4d36e972-e325-11ce-bfc1-08002be10318 netclient 網(wǎng)絡客戶機 4d36e973-e325-11ce-bfc1-08002be10318 netservice 網(wǎng)絡服務器 4d36e974-e325-11ce-bfc1-08002be10318 nettrans 網(wǎng)絡傳輸 4d3
36、6e975-e325-11ce-bfc1-08002be10318 pcmcia pcmcia適配器 4d36e977-e325-11ce-bfc1-08002be10318 ports 端口(com & lpt) 4d36e978-e325-11ce-bfc1-08002be10318 printer 打印機設備 4d36e979-e325-11ce-bfc1-08002be10318 volume 存儲卷 71a27cdd-812a-11d0-bec7-08002be2092f system 系統(tǒng)設備 4d36e97d-e325-11ce-bfc1-08002be10318 usb usb 36fc9e60-c465-11cf-8056-444553540000 表15.9. 安裝類: 名字和guids 自定義安裝 驅動程序一般提供兩個定制驅動程序安裝的信息第一提供一個自定義的安裝程序代替新硬件安裝程序為了提供這個功能自定義的安裝程序需要使用setupapi.dll提供的例程這個庫中的每個函數(shù)的形式是setupdixxxddk提供使用這個庫的詳細資料 第二驅動程序可以提供一個自
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025Ha居間合同求盤
- 2025原材料買賣合同
- 2025合資經(jīng)營企業(yè)合作合同
- 課題申報參考:馬克思恩格斯對“慈善資本化”的本質批判及其當代價值研究
- 科技驅動下的創(chuàng)業(yè)與職業(yè)發(fā)展新模式
- 2024年電子式金屬、非金屬試驗機項目資金申請報告代可行性研究報告
- 數(shù)學課堂中的師生互動與思維能力培養(yǎng)
- 節(jié)能環(huán)保洗浴中心裝修技術解析
- (2020年編輯)新版GSP零售藥店質量管理手冊
- 2025年滬科版選擇性必修3化學上冊階段測試試卷含答案
- 電纜擠塑操作手冊
- 浙江寧波鄞州區(qū)市級名校2025屆中考生物全真模擬試卷含解析
- 2024-2025學年廣東省深圳市南山區(qū)監(jiān)測數(shù)學三年級第一學期期末學業(yè)水平測試試題含解析
- IATF16949基礎知識培訓教材
- 【MOOC】大學生創(chuàng)新創(chuàng)業(yè)知能訓練與指導-西北農林科技大學 中國大學慕課MOOC答案
- 勞務派遣公司員工考核方案
- 基礎生態(tài)學-7種內種間關系
- 2024年光伏農田出租合同范本
- 《阻燃材料與技術》課件 第3講 阻燃基本理論
- 2024-2030年中國黃鱔市市場供需現(xiàn)狀與營銷渠道分析報告
- 新人教版九年級化學第三單元復習課件
評論
0/150
提交評論