亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? jiurl鍵盤驅動 2.htm

?? JIURL鍵盤驅動
?? HTM
?? 第 1 頁 / 共 3 頁
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0058)http://jiurl.nease.net/cn/document/KbdDriver/JiurlKbd2.htm -->
<HTML><HEAD><TITLE>JIURL鍵盤驅動 2</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>.title {
	FONT-WEIGHT: bold; FONT-SIZE: 21px; LINE-HEIGHT: 48px; FONT-FAMILY: "黑體", Arial, sans-serif; TEXT-DECORATION: none
}
.author {
	FONT-SIZE: 12px; LINE-HEIGHT: 16px; FONT-FAMILY: "宋體"
}
.content {
	FONT-SIZE: 14px; LINE-HEIGHT: 20px
}
</STYLE>

<META content="MSHTML 6.00.2900.2668" name=GENERATOR></HEAD>
<BODY bgColor=#f7f7f7 topMargin=5>
<DIV align=center>
<CENTER>
<TABLE height=29 cellSpacing=0 cellPadding=0 width="96%" border=0>
  <TBODY>
  <TR>
    <TD class=title width="100%" height=41>
      <P align=center><FONT face=宋體>JIURL鍵盤驅動 2</FONT></P></TD></TR></CENTER>
  <TR>
    <TD class=author width="100%" height=9>
      <P align=center><FONT face=宋體>作者: <A 
      href="mailto:jiurl@mail.china.com">JIURL</A> </FONT></P></TD></TR>
  <TR>
    <TD class=author width="100%" height=6>
      <P align=center><FONT 
      face=宋體>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      主頁: <A href="http://jiurl.yeah.net/">http://jiurl.yeah.net/</A> 
    </FONT></P></TD></TR>
  <TR>
    <TD class=author width="100%" height=2>
      <P align=center><FONT face=宋體>&nbsp;&nbsp;&nbsp; 日期: 2003-12-13</FONT> 
    </P></TD></TR></TBODY></TABLE></DIV>
<DIV align=center>
<CENTER>
<TABLE height=1 cellSpacing=0 cellPadding=0 width="96%" border=0>
  <TBODY>
  <TR>
    <TD width="100%" height=1>
      <HR color=#396da5 SIZE=3>
    </TD></TR></TBODY></TABLE></CENTER></DIV>
<DIV align=center>
<TABLE class=content height=200 cellSpacing=0 cellPadding=0 width="96%" 
border=0>
  <TBODY>
  <TR>
    <TD vAlign=top width="131%" height=200>
      <P><B>2 應用層基礎知識</B><BR><BR>&nbsp;&nbsp;&nbsp; 在討論使用鍵盤的應用程序這個問題之前,我們首先介紹一下 
      Windows 中,應用程序使用驅動,應用程序與驅動通信的一些問題。<BR><BR>2.1 
      應用程序如何使用驅動<BR><BR>&nbsp;&nbsp;&nbsp; 應用程序中使用 
      CreateFile,ReadFile,WriteFile,DeviceIoControl,CloseHandle 
      來指示驅動程序完成某種任務。比如我們在應用程序中使用 ReadFile 來讓驅動讀取硬件設備,我們在應用程序中使用 WriteFile 
      來讓驅動寫硬件設備,我們在應用程序中使用 DeviceIoContorl 來讓驅動完成某些驅動支持的功能。而 ReadFile, 
      WriteFile, DeviceIoControl 這三個 api 都需要一個句柄作為參數,以確定他們是要哪個驅動來完成他們的請求。這個句柄是通過 
      CreateFile 獲得的。使用 CloseHandle 關閉這個句柄。簡單的說就是,應用程序中,首先要通過 CreateFile 
      獲得一個句柄,之后應用程序可以以這個句柄為參數,使用 ReadFile,WriteFile,DeviceIoControl 
      讓驅動程序執行某種操作。當不再使用時,通過 CloseHandle 關閉這個句柄。<BR><BR>&nbsp;&nbsp;&nbsp; 這幾個 
      api 都位于 KERNEL32.DLL 中,他們最終會通過系統服務(int 2e)調用內核中的相應的函數,如 
      NtCreateFile,NtReadFile 等。而 NtCreateFile,NtReadFile 等函數中,會創建一個 
      IRP,并用傳入的參數初始化這個 IRP,然后將這個 IRP 發給驅動,讓驅動做處理。相應的 NtCreateFile 產生 
      IRP_MJ_CREATE 的 IRP ,NtReadFile 產生 IRP_MJ_READ 的 IRP。驅動得到這些 IRP 
      ,根據情況做處理,對于 IRP_MJ_READ ,會調用驅動中處理 IRP_MJ_READ 
      的部分,可能最后引起讀硬件的操作。<BR><BR><BR>2.2 獲得指定驅動的句柄<BR><BR>&nbsp;&nbsp;&nbsp; 
      對于希望被應用程序使用的驅動,會在初始化的過程中,把能找到它設備對象的一個 SymbolicLink 放在對象管理器命名空間(Object 
      Manager Namespace)的 \??\ 下。這樣用 "\\\\.\\那個SymbolicLink的名字" 作為 CreateFile 的 
      lpFileName 參數,調用 CreateFile ,得到的句柄就可以找到相應的驅動的那個設備對象(\\.\ 會被轉換成 
      \??\)。之后以這個句柄為參數使用 ReadFile,WriteFile,DeviceIoControl,產生的 IRP 
      就被發到相應的設備對象。也就是說只要驅動把 設備對象的 SymbolicLink 放在 \??\ 下,并且應用程序知道這個 SymbolicLink 
      的名字,就可以使用 CreateFile 得到相應的句柄。<BR><BR>HANDLE CreateFile(<BR>LPCTSTR 
      lpFileName, // file name<BR>DWORD dwDesiredAccess, // access mode<BR>DWORD 
      dwShareMode, // share mode<BR>LPSECURITY_ATTRIBUTES lpSecurityAttributes, 
      // SD<BR>DWORD dwCreationDisposition, // how to create<BR>DWORD 
      dwFlagsAndAttributes, // file attributes<BR>HANDLE hTemplateFile // handle 
      to template file<BR>);<BR><BR><BR>可以使用工具 WinObj 來查看 對象管理器命名空間(Object 
      Manager Namespace) 。WinObj 可以從 http://www.sysinternals.com 
      獲得。關于內核對象和命名地址空間的詳細介紹,可以參考《 JIURL玩玩Win2k 對象 
      》,這篇文章可以在我的主頁上找到。<BR><BR>在驅動的初始化過程中,會通過調用 IoCreateDevice 
      創建設備對象,可以指定一個設備名作為IoCreateDevice 的參數(也可以不指定,那樣這個設備對象就沒有名字)。這樣這個設備對象會被放在 
      對象管理器命名空間(Object Manager Namespace)的 \Device\ 下。不過應用程序只能訪問命名空間的 \??\ 
      ,所以如果驅動希望把設備對象暴露給應用程序的話,會為設備對象創建一個 SymbolicLink 放在 \??\ 下。對于放在 \Device\ 
      下的有名字的設備,其他驅動程序如果知道它的名字,就可以使用 IoGetDeviceObjectPointer 
      得到這個設備對象的指針。<BR><BR>驅動可以通過 IoCreateSymbolicLink ,在 \??\ 下建立設備對象的 
      SymbolicLink 。這樣應用程序必須要也知道該 SymbolicLink 的名字,然后就可以以這個符號鏈接名做參數使用 CreateFile 
      ,得到句柄。從 IoCreateSymbolicLink 的參數,我們可以知道,只能使用 IoCreateSymbolicLink 
      為有名字的設備對象建立 SymbolicLink。<BR><BR>另一種方法是,使用一個 GUID 來標識一個設備接口。驅動使用標識設備的 GUID 
      做參數調用IoRegisterDeviceInterface ,然后使用 IoSetDeviceInterfaceState ,就會為設備對象在 
      \??\ 下產生一個符號鏈接(SymbolicLink)。應用程序使用同一個 GUID 做參數,使用API: 
      SetupDiGetClassDevs, SetupDiEnumDeviceInterfaces, 
      SetupDiGetDeviceInterfaceDetail 就可以得到創建的 \??\ 下的符號鏈接名,就可以以這個符號鏈接名做參數使用 
      CreateFile ,得到句柄。<BR><BR>&nbsp;&nbsp;&nbsp; 
      句柄簡介。每個進程都有一個自己的句柄表,句柄表中放著內核對象的指針,句柄就是內核對象在句柄表中的索引。通過句柄就可以在進程的句柄表中找到對應的內核對象的指針。關于句柄的詳細介紹,可以參考 
      《 JIURL玩玩Win2k 進程線程篇 HANDLE_TABLE 》,這篇文章可以在我的主頁上找到。<BR><BR>2.3 
      一些結論<BR><BR>&nbsp;&nbsp;&nbsp; SymbolicLink 對象可以找到相應的 設備對象。SymbolicLink 
      對象中保存著相應的 設備對象的地址。設備對象不保存它的 SymbolicLink 對象的任何信息。SymbolicLink 
      對象的地址保存在對象管理器命名空間(Object Manager Namespace)中。也就是說只要知道 SymbolicLink 
      的名字,就可以在對象管理器命名空間中找到它。應用程序 CreateFile 得到的句柄,通過這個句柄在進程的句柄表中找到的是一個文件對象(File 
      Object)。文件對象 對應的 設備對象 中不保存這個文件對象的任何信息。對應的 SymbolicLink 
      對象中也不保存這個文件對象的任何信息。這個文件對象的地址,保存在應用程序的句柄表中,應用程序通過句柄可以找到這個文件對象。這個 文件對象 
      中保存著對應的 設備對象 的地址。可以猜到,應用程序在用 CreateFile 創建的時候,會根據參數中的 SymolicLink 名字,找到 
      SymolicLink 對象,進而找到該對象中保存的 設備對象 的地址,然后直接把找到的 設備對象 的地址保存在文件對象中。文件對象的 +04 
      struct _DEVICE_OBJECT *DeviceObject 
      處,保存著對應的設備對象的地址。<BR><BR>&nbsp;&nbsp;&nbsp; 對于需要暴露接口給應用程序的驅動。首先,驅動中需要在 
      對象管理器命名空間的 \??\ 下,為設備對象建立一個 SymbolicLink ,不管采取何種方式。之后,應用程序要知道這個 
      SymbolicLink 的名字,不管采取何種方式。然后應用程序以 "\\\\.\\那個SymbolicLink的名字" 為參數使用 
      CreateFile 得到一個句柄。這樣,之后的 DeviceIoControl(),WriteFile(),ReadFile() 使用前面用 
      CreateFile 得到的句柄作為參數,他們可以通過這個句柄,找到對應的文件對象,而這個文件對象中保存有對應的 設備對象 的指針,這樣就可以將 
      IRP 發到這些設備。&nbsp;<BR><BR>&nbsp;&nbsp;&nbsp; 
      上面的結論是通過對一個小例子進行觀察得到的。<BR><BR>2.4 IRP 將被發往設備棧的棧頂<BR><BR>&nbsp;&nbsp;&nbsp; 
      IRP 
      將無論如何被發往設備棧的頂。CreateFile,ReadFile,WriteFile,DeviceIoControl,CloseHandle。他們最終都會產生一個 
      IRP,發給一個設備對象。對于 CreateFile 來說通過 SymbolicLink的名字 
      來找到一個設備對象。對于其他的幾個函數,通過句柄,找到一個文件對象,文件對象中保存有設備對象的指針。不過產生的 IRP 
      并不一定發給找到的這個設備對象,而是發給找到的這個設備對象所在設備棧的最頂上的一個設備對象。<BR><BR>&nbsp;&nbsp;&nbsp; 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91国产精品成人| 中文字幕欧美日本乱码一线二线 | www.成人网.com| 国产麻豆视频一区二区| 美女在线视频一区| 精品一区二区在线观看| 久草热8精品视频在线观看| 日韩激情中文字幕| 日韩影视精彩在线| 日本午夜精品视频在线观看| 日韩电影免费在线看| 老司机午夜精品99久久| 久久精品国产在热久久| 国内外成人在线| 国产老女人精品毛片久久| 成人性生交大片免费看在线播放 | 91亚洲精品久久久蜜桃网站| 91亚洲男人天堂| 精品视频123区在线观看| 欧美日韩一区二区不卡| 制服丝袜亚洲色图| 精品99一区二区三区| 久久久久青草大香线综合精品| 久久品道一品道久久精品| 欧美国产精品一区二区三区| 亚洲乱码中文字幕综合| 一区二区三区久久久| 日韩精品一级中文字幕精品视频免费观看| 亚洲成av人综合在线观看| 麻豆国产一区二区| 粉嫩av一区二区三区在线播放| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 国产欧美一二三区| 亚洲黄色片在线观看| 日韩av高清在线观看| 国产精品一级黄| 色婷婷久久综合| 欧美一区二区三区在线视频| 欧美激情一区二区| 亚洲电影一区二区三区| 九九**精品视频免费播放| 成人免费观看av| 欧美日韩高清在线播放| 久久精品人人爽人人爽| 亚洲精品免费视频| 另类欧美日韩国产在线| 99在线精品视频| 欧美肥妇bbw| 国产精品久久久久久久午夜片| 亚洲成人动漫在线免费观看| 国产精品白丝jk黑袜喷水| 在线观看网站黄不卡| 精品国产a毛片| 亚洲一区欧美一区| 日韩精品资源二区在线| 国产欧美精品在线观看| 三级在线观看一区二区| 成人自拍视频在线观看| 在线不卡中文字幕播放| 亚洲国产精品成人久久综合一区| 亚洲一二三四区不卡| 国产乱码精品一区二区三| 欧美日韩一区在线观看| 中文字幕欧美日韩一区| 日本va欧美va精品| 91在线视频播放地址| 久久综合久久鬼色| 亚洲午夜免费福利视频| 懂色av中文字幕一区二区三区| 91精品欧美福利在线观看| 亚洲欧美另类久久久精品 | 色偷偷久久一区二区三区| 久久女同性恋中文字幕| 日韩高清电影一区| 91麻豆精东视频| 国产目拍亚洲精品99久久精品| 日本欧美加勒比视频| 欧美系列亚洲系列| 亚洲欧洲99久久| 国产一区视频网站| 日韩免费高清av| 亚洲国产精品久久人人爱蜜臀 | 精品久久一区二区三区| 首页国产欧美久久| 色88888久久久久久影院按摩| 国产精品三级av在线播放| 极品美女销魂一区二区三区免费 | 亚洲视频一区二区在线观看| 国产一区二区三区视频在线播放| 欧美精品1区2区3区| 亚洲国产欧美在线人成| 99久久综合色| 国产精品乱子久久久久| 国产一二精品视频| 日韩欧美123| 麻豆一区二区三区| 在线成人高清不卡| 婷婷成人激情在线网| 欧美日韩第一区日日骚| 亚洲第四色夜色| 欧美日韩小视频| 亚洲国产成人av好男人在线观看| 日本高清视频一区二区| 亚洲精品视频一区二区| 99re成人在线| 亚洲蜜桃精久久久久久久| 97国产精品videossex| **性色生活片久久毛片| 97精品久久久午夜一区二区三区 | 午夜精品影院在线观看| 欧美伦理电影网| 婷婷夜色潮精品综合在线| 欧美久久久一区| 强制捆绑调教一区二区| 欧美精品一区视频| 国产美女视频91| 国产一区二区三区黄视频| 久久青草国产手机看片福利盒子 | 欧美日韩免费一区二区三区视频| 亚洲一二三区在线观看| 欧美日韩一区二区三区在线看| 五月天一区二区| 日韩免费福利电影在线观看| 国产精品亚洲专一区二区三区| 国产精品色婷婷久久58| 91论坛在线播放| 亚洲成a人片在线观看中文| 日韩欧美一级特黄在线播放| 韩国毛片一区二区三区| 国产精品美女久久久久aⅴ国产馆| 99久久精品一区二区| 亚洲小少妇裸体bbw| 日韩免费视频一区| 国产·精品毛片| 亚洲欧美国产毛片在线| 69久久99精品久久久久婷婷 | 91论坛在线播放| 日韩精品欧美精品| 26uuu欧美| 99国产精品久久久久久久久久久| 亚洲一区在线看| 欧美电视剧在线观看完整版| 国产.精品.日韩.另类.中文.在线.播放 | 国产日韩成人精品| 在线欧美日韩精品| 奇米色777欧美一区二区| 亚洲国产精品成人综合| 欧美视频一区二区在线观看| 蜜桃一区二区三区在线| 亚洲欧美一区二区在线观看| 欧美精品久久一区| 丁香婷婷综合色啪| 天堂蜜桃一区二区三区| 国产欧美视频在线观看| 欧美日韩一区二区三区高清| 国产精品亚洲专一区二区三区| 亚洲自拍偷拍网站| 国产日韩综合av| 欧美探花视频资源| 国产精品一区二区在线看| 亚洲高清视频在线| 欧美激情在线一区二区三区| 56国语精品自产拍在线观看| 99久久国产免费看| 久久 天天综合| 午夜精品久久久久影视| 成人欧美一区二区三区视频网页| 欧美一级黄色录像| 色综合天天视频在线观看| 亚洲黄色录像片| 一本色道综合亚洲| 欧美r级在线观看| 亚洲精品欧美综合四区| 色猫猫国产区一区二在线视频| 26uuu亚洲综合色欧美 | 成人福利视频在线看| 欧美在线一二三| 亚洲三级电影网站| 亚洲国产婷婷综合在线精品| 老司机免费视频一区二区 | 亚洲一区二区不卡免费| 精品国产露脸精彩对白| 欧美高清www午色夜在线视频| 北条麻妃一区二区三区| 国产专区欧美精品| 日韩不卡手机在线v区| 亚洲在线观看免费| 国产精品三级久久久久三级| 精品99一区二区| 91精品麻豆日日躁夜夜躁| 欧美亚男人的天堂| 91同城在线观看| 成人av高清在线| 国产乱码精品一品二品| 九九热在线视频观看这里只有精品 | 天堂一区二区在线| 一区二区日韩av| 一区二区三区中文字幕精品精品 | 91黄色小视频| 色综合夜色一区|