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

蟲蟲首頁| 資源下載| 資源專輯| 精品軟件
登錄| 注冊

國外<b>計算機科學</b>經典教材

  • 驅動程序與應用程序的接口

    有兩種方式可以讓設備和應用程序之間聯系:1. 通過為設備創建的一個符號鏈;2. 通過輸出到一個接口WDM驅動程序建議使用輸出到一個接口而不推薦使用創建符號鏈的方法。這個接口保證PDO的安全,也保證安全地創建一個惟一的、獨立于語言的訪問設備的方法。一個應用程序使用Win32APIs來調用設備。在某個Win32 APIs和設備對象的分發函數之間存在一個映射關系。獲得對設備對象訪問的第一步就是打開一個設備對象的句柄。 用符號鏈打開一個設備的句柄為了打開一個設備,應用程序需要使用CreateFile。如果該設備有一個符號鏈出口,應用程序可以用下面這個例子的形式打開句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3",  GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ,  NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路徑名的前綴“\\.\”告訴系統本調用希望打開一個設備。這個設備必須有一個符號鏈,以便應用程序能夠打開它。有關細節查看有關Kdevice和CreateLink的內容。在上述調用中第一個參數中前綴后的部分就是這個符號鏈的名字。注意:CreatFile中的第一個參數不是Windows 98/2000中驅動程序(.sys文件)的路徑。是到設備對象的符號鏈。如果使用DriverWizard產生驅動程序,它通常使用類KunitizedName來構成設備的符號鏈。這意味著符號鏈名有一個附加的數字,通常是0。例如:如果鏈接名稱的主干是L“TestDevice”那么在CreateFile中的串就該是“\\\\.\\TestDevice0”。如果應用程序需要被覆蓋的I/O,第六個參數(Flags)必須或上FILE_FLAG_OVERLAPPED。 使用一個輸出接口打開句柄用這種方式打開一個句柄會稍微麻煩一些。DriverWorks庫提供兩個助手類來使獲得對該接口的訪問容易一些,這兩個類是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass類封裝了一個設備信息集,該信息集包含了特殊類中的所有設備接口信息。應用程序能有用CdeviceInterfaceClass類的一個實例來獲得一個或更多的CdeviceInterface類的實例。CdeviceInterface類是一個單一設備接口的抽象。它的成員函數DevicePath()返回一個路徑名的指針,該指針可以在CreateFile中使用來打開設備。下面用一個小例子來顯示這些類最基本的使用方法:extern GUID TestGuid;HANDLE OpenByInterface(  GUID* pClassGuid,  DWORD instance,  PDWORD pError){  CDeviceInterfaceClass DevClass(pClassGuid, pError);  if (*pError != ERROR_SUCCESS)    return INVALID_HANDLE_VALUE;  CDeviceInterface DevInterface(&DevClass, instance, pError);  if (*pError != ERROR_SUCCESS)    return INVALID_HANDLE_VALUE;  cout << "The device path is "    << DevInterface.DevicePath()    << endl;   HANDLE hDev;  hDev = CreateFile(   DevInterface.DevicePath(),    GENERIC_READ | GENERIC_WRITE,    FILE_SHARE_READ | FILE_SHARE_WRITE,    NULL,    OPEN_EXISTING,    FILE_ATTRIBUTE_NORMAL,    NULL  );  if (hDev == INVALID_HANDLE_VALUE)    *pError = GetLastError();  return hDev;} 在設備中執行I/O操作一旦應用程序獲得一個有效的設備句柄,它就能使用Win32 APIs來產生到設備對象的IRPs。下面的表顯示了這種對應關系。Win32 API  DRIVER_FUNCTION_xxxIRP_MJ_xxx  KDevice subclass member function CreateFile  CREATE  Create ReadFile  READ  Read WriteFile  WRITE  Write DeviceIoControl  DEVICE_CONTROL  DeviceControl CloseHandle  CLOSECLEANUP  CloseCleanUp 需要解釋一下設備類成員的Close和CleanUp:CreateFile使內核為設備創建一個新的文件對象。這使得多個句柄可以映射同一個文件對象。當這個文件對象的最后一個用戶級句柄被撤銷后,I/O管理器調用CleanUp。當沒有任何用戶級和核心級的對文件對象的訪問的時候,I/O管理器調用Close。如果被打開的設備不支持指定的功能,則調用相應的Win32將引起錯誤(無效功能)。以前為Windows95編寫的VxD的應用程序代碼中可能會在打開設備的時候使用FILE_FLAG_DELETE_ON_CLOSE屬性。在Windows NT/2000中,建議不要使用這個屬性,因為它將導致沒有特權的用戶企圖打開這個設備,這是不可能成功的。I/O管理器將ReadFile和WriteFile的buff參數轉換成IRP域的方法依賴于設備對象的屬性。當設備設置DO_DIRECT_IO標志,I/O管理器將buff鎖住在存儲器中,并且創建了一個存儲在IRP中的MDL域。一個設備可以通過調用Kirp::Mdl來存取MDL。當設備設置DO_BUFFERED_IO標志,設備對象分別通過KIrp::BufferedReadDest或 KIrp::BufferedWriteSource為讀或寫操作獲得buff地址。當設備不設置DO_BUFFERED_IO標志也不設置DO_DIRECT_IO,內核設置IRP 的UserBuffer域來對應ReadFile或WriteFile中的buff參數。然而,存儲區并沒有被鎖住而且地址只對調用進程有效。驅動程序可以使用KIrp::UserBuffer來存取IRP域。對于DeviceIoControl調用,buffer參數的轉換依賴于特殊的I/O控制代碼,它不在設備對象的特性中。宏CTL_CODE(在winioctl.h中定義)用來構造控制代碼。這個宏的其中一個參數指明緩沖方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表顯示了這些方法和與之對應的能獲得輸入緩沖與輸出緩沖的KIrp中的成員函數:Method  Input Buffer Parameter  Output Buffer Parameter METHOD_BUFFERED  KIrp::IoctlBuffer KIrp::IoctlBuffer METHOD_IN_DIRECT  KIrp::IoctlBuffer KIrp::Mdl METHOD_OUT_DIRECT  KIrp::IoctlBuffer KIrp::Mdl METHOD_NEITHER  KIrp::IoctlType3InputBuffer KIrp::UserBuffer 如果控制代碼指明METHOD_BUFFERED,系統分配一個單一的緩沖來作為輸入與輸出。驅動程序必須在向輸出緩沖放數據之前拷貝輸入數據。驅動程序通過調用KIrp::IoctlBuffer獲得緩沖地址。在完成時,I/O管理器從系統緩沖拷貝數據到提供給Ring 3級調用者使用的緩沖中。驅動程序必須在結束前存儲拷貝到IRP的Information成員中的數據個數。如果控制代碼不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,則DeviceIoControl的參數呈現不同的含義。參數InputBuffer被拷貝到一個系統緩沖,這個緩沖驅動程序可以通過調用KIrp::IoctlBuffer。參數OutputBuffer被映射到KMemory對象,驅動程序對這個對象的訪問通過調用KIrp::Mdl來實現。對于METHOD_OUT_DIRECT,調用者必須有對緩沖的寫訪問權限。注意,對METHOD_NEITHER,內核只提供虛擬地址;它不會做映射來配置緩沖。虛擬地址只對調用進程有效。這里是一個用METHOD_BUFFERED的例子:首先,使用宏CTL_CODE來定義一個IOCTL代碼:#define IOCTL_MYDEV_GET_FIRMWARE_REV \CTL_CODE (FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)現在使用一個DeviceIoControl調用:BOOLEAN b;CHAR FirmwareRev[60];ULONG FirmwareRevSize;b = DeviceIoControl(hDevice, IOCTL_MYDEV_GET_VERSION_STRING,  NULL, // no input  注意,這里放的是包含有執行操作命令的字符串指針  0, FirmwareRev,      //這里是output串指針,存放從驅動程序中返回的字符串。sizeof(FirmwareRev),& FirmwareRevSize,  NULL // not overlapped I/O );如果輸出緩沖足夠大,設備拷貝串到里面并將拷貝的資結束設置到FirmwareRevSize中。在驅動程序中,代碼看起來如下所示:const char* FIRMWARE_REV = "FW 16.33 v5";NTSTATUS MyDevice::DeviceControl( KIrp I ){  ULONG fwLength=0;  switch ( I.IoctlCode() )  {    case IOCTL_MYDEV_GET_FIRMWARE_REV:      fwLength = strlen(FIRMWARE_REV)+1;      if (I.IoctlOutputBufferSize() >= fwLength)      {        strcpy((PCHAR)I.IoctlBuffer(),FIRMWARE_REV);        I.Information() = fwLength;         return I.Complete(STATUS_SUCCESS);      }      else      {              }    case . . .   } }

    標簽: 驅動程序 應用程序 接口

    上傳時間: 2013-10-17

    上傳用戶:gai928943

  • 匯編語言和C語言的外部中斷

    CPU在處理某一事件時,發生了另一事件請求CPU迅速去處理。CPU暫時中斷當前的工作,轉去處理事件B。待CPU將事件B處理完畢后,再回到原來事件A被中斷的地方繼續處理事件A。這一處理過程稱為中斷。介紹用匯編和C語言兩語言的源程序,愿給大家帶來幫助。 前面我已經上傳了幾個程序,沒幾天卻失蹤了。但這次的不會失蹤,能保留上幾天。

    標簽: 匯編語言 C語言 外部中斷

    上傳時間: 2014-12-31

    上傳用戶:dianxin61

  • VI圖標和連線板

    當一個VI A.vi在VI B.vi 中使用,就稱A.vi為B.vi的子VI,B.vi為A.vi的主VI。子VI 相當于文本編程語言中的子程序。 在主VI的程序框圖中雙擊子VI的圖標時,將出現該子VI 的前面板和程序框圖。在前面板窗口和程序框圖窗口的右上角可以看到該VI 的圖標。該圖標與將VI放置在程序框圖中時所顯示的圖標相同。

    標簽:

    上傳時間: 2013-10-31

    上傳用戶:jisujeke

  • RSA算法 :首先, 找出三個數, p, q, r, 其中 p, q 是兩個相異的質數, r 是與 (p-1)(q-1) 互質的數...... p, q, r 這三個數便是 person_key

    RSA算法 :首先, 找出三個數, p, q, r, 其中 p, q 是兩個相異的質數, r 是與 (p-1)(q-1) 互質的數...... p, q, r 這三個數便是 person_key,接著, 找出 m, 使得 r^m == 1 mod (p-1)(q-1)..... 這個 m 一定存在, 因為 r 與 (p-1)(q-1) 互質, 用輾轉相除法就可以得到了..... 再來, 計算 n = pq....... m, n 這兩個數便是 public_key ,編碼過程是, 若資料為 a, 將其看成是一個大整數, 假設 a < n.... 如果 a >= n 的話, 就將 a 表成 s 進位 (s

    標簽: person_key RSA 算法

    上傳時間: 2013-12-14

    上傳用戶:zhuyibin

  • C++完美演繹 經典算法 如 /* 頭文件:my_Include.h */ #include <stdio.h> /* 展開C語言的內建函數指令 */ #define PI 3.141

    C++完美演繹 經典算法 如 /* 頭文件:my_Include.h */ #include <stdio.h> /* 展開C語言的內建函數指令 */ #define PI 3.1415926 /* 宏常量,在稍后章節再詳解 */ #define circle(radius) (PI*radius*radius) /* 宏函數,圓的面積 */ /* 將比較數值大小的函數寫在自編include文件內 */ int show_big_or_small (int a,int b,int c) { int tmp if (a>b) { tmp = a a = b b = tmp } if (b>c) { tmp = b b = c c = tmp } if (a>b) { tmp = a a = b b = tmp } printf("由小至大排序之后的結果:%d %d %d\n", a, b, c) } 程序執行結果: 由小至大排序之后的結果:1 2 3 可將內建函數的include文件展開在自編的include文件中 圓圈的面積是=201.0619264

    標簽: my_Include include define 3.141

    上傳時間: 2014-01-17

    上傳用戶:epson850

  • 一元稀疏多項式計算器[加法和乘法] 問題描述: 設計一元系數多項式計數器實現兩個多項式間的加法、減法。 基本要求: (1) 輸入并建立多項式 (2) 輸出多項式

    一元稀疏多項式計算器[加法和乘法] 問題描述: 設計一元系數多項式計數器實現兩個多項式間的加法、減法。 基本要求: (1) 輸入并建立多項式 (2) 輸出多項式,輸出形式為整數序列:n,c1,e1,c2,e2……cn,en,其中n是多項式的項數,ci,ei分別為第i項的系數和指數。序列按指數降序排列。 (3) 多項式a和b相加,建立多項式a+b,輸出相加的多項式。 (4) 多項式a和b相減,建立多項式a-b,輸出相減的多項式。 用帶表頭結點的單鏈表存儲多項式。 測試數據: (1) (2x+5x8-3.1x11)+(7-5x8+11x9) (2) (6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15) (3) (x+x2+x3)+0 (4) (x+x3)-(-x-x-3)

    標簽: 多項式 加法 稀疏 乘法

    上傳時間: 2013-12-03

    上傳用戶:561596

  • 數字運算

    數字運算,判斷一個數是否接近素數 A Niven number is a number such that the sum of its digits divides itself. For example, 111 is a Niven number because the sum of its digits is 3, which divides 111. We can also specify a number in another base b, and a number in base b is a Niven number if the sum of its digits divides its value. Given b (2 <= b <= 10) and a number in base b, determine whether it is a Niven number or not. Input Each line of input contains the base b, followed by a string of digits representing a positive integer in that base. There are no leading zeroes. The input is terminated by a line consisting of 0 alone. Output For each case, print "yes" on a line if the given number is a Niven number, and "no" otherwise. Sample Input 10 111 2 110 10 123 6 1000 8 2314 0 Sample Output yes yes no yes no

    標簽: 數字 運算

    上傳時間: 2015-05-21

    上傳用戶:daguda

  • LCS(最長公共子序列)問題可以簡單地描述如下: 一個給定序列的子序列是在該序列中刪去若干元素后得到的序列。給定兩個序列X和Y

    LCS(最長公共子序列)問題可以簡單地描述如下: 一個給定序列的子序列是在該序列中刪去若干元素后得到的序列。給定兩個序列X和Y,當另一序列Z既是X的子序列又是Y的子序列時,稱Z是序列X和Y的公共子序列。例如,若X={A,B,C,B,D,B,A},Y={B,D,C,A,B,A},則序列{B,C,A}是X和Y的一個公共子序列,但它不是X和Y的一個最長公共子序列。序列{B,C,B,A}也是X和Y的一個公共子序列,它的長度為4,而且它是X和Y的一個最長公共子序列,因為X和Y沒有長度大于4的公共子序列。 最長公共子序列問題就是給定兩個序列X={x1,x2,...xm}和Y={y1,y2,...yn},找出X和Y的一個最長公共子序列。對于這個問題比較容易想到的算法是窮舉,對X的所有子序列,檢查它是否也是Y的子序列,從而確定它是否為X和Y的公共子序列,并且在檢查過程中記錄最長的公共子序列。X的所有子序列都檢查過后即可求出X和Y的最長公共子序列。X的每個子序列相應于下標集{1,2,...,m}的一個子集。因此,共有2^m個不同子序列,從而窮舉搜索法需要指數時間。

    標簽: 序列 LCS 元素

    上傳時間: 2015-06-09

    上傳用戶:氣溫達上千萬的

  • c語言版的多項式曲線擬合。 用最小二乘法進行曲線擬合. 用p-1 次多項式進行擬合

    c語言版的多項式曲線擬合。 用最小二乘法進行曲線擬合. 用p-1 次多項式進行擬合,p<= 10 x,y 的第0個域x[0],y[0],沒有用,有效數據從x[1],y[1] 開始 nNodeNum,有效數據節點的個數。 b,為輸出的多項式系數,b[i] 為b[i-1]次項。b[0],沒有用。 b,有10個元素ok。

    標簽: 多項式 曲線擬合 c語言 最小二乘法

    上傳時間: 2014-01-12

    上傳用戶:變形金剛

  • 高精度乘法基本思想和加法一樣。其基本流程如下: ①讀入被乘數s1

    高精度乘法基本思想和加法一樣。其基本流程如下: ①讀入被乘數s1,乘數s2 ②把s1、s2分成4位一段,轉成數值存在數組a,b中;記下a,b的長度k1,k2; ③i賦為b中的最低位; ④從b中取出第i位與a相乘,累加到另一數組c中;(注意:累加時錯開的位數應是多少位 ?) ⑤i:=i-1;檢測i值:小于k2則轉⑥,否則轉④ ⑥打印結果

    標簽: 高精度 乘法 加法 基本流程

    上傳時間: 2015-08-16

    上傳用戶:源弋弋

亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品美女久久7777777| 国产精品久久久久久久第一福利| 免播放器亚洲一区| 韩日午夜在线资源一区二区| 欧美在线视频日韩| 精品91视频| 欧美激情aaaa| 亚洲午夜久久久| 国产午夜精品视频| 久久综合色婷婷| 99热在线精品观看| 国产欧美在线播放| 免费视频亚洲| 午夜精品一区二区三区四区| 亚洲大片在线| 国产精品久久久一区二区三区| 久久国产视频网| 亚洲精品视频一区| 国产亚洲制服色| 欧美日韩一区二| 久久夜色精品国产欧美乱| 亚洲乱码国产乱码精品精可以看| 国产精品永久免费在线| 欧美成年人网| 欧美中文字幕在线| 99热这里只有成人精品国产| 国内精品久久久| 欧美日韩色婷婷| 久久精品国产精品亚洲| 99亚洲精品| 亚洲国产国产亚洲一二三| 国产精品久久久久久久久久尿 | 这里只有精品电影| 在线免费观看日韩欧美| 国产精品伦子伦免费视频| 欧美成人免费全部观看天天性色| 西西人体一区二区| 亚洲美洲欧洲综合国产一区| 亚洲电影免费| 很黄很黄激情成人| 国产日韩高清一区二区三区在线| 欧美日韩国产成人精品| 欧美gay视频激情| 久久美女性网| 久久国产主播精品| 午夜日韩在线观看| 亚洲伊人色欲综合网| av成人动漫| 日韩视频一区二区在线观看 | 欧美不卡视频一区| 久久久久免费视频| 欧美在线观看视频在线| 亚洲影音一区| 亚洲欧美精品| 亚洲女女女同性video| 99精品欧美一区二区三区综合在线| 悠悠资源网久久精品| 国产亚洲欧洲997久久综合| 国产精品午夜在线| 国产精品日韩专区| 国产乱肥老妇国产一区二| 欧美性大战久久久久| 欧美日韩国产综合网| 欧美视频亚洲视频| 国产毛片精品视频| 国产亚洲欧美色| 一区二区三区在线免费观看| 亚洲国产日韩欧美在线图片| 日韩亚洲国产欧美| 亚洲专区在线视频| 欧美在线视频导航| 久久女同互慰一区二区三区| 久久久av网站| 欧美.www| 欧美手机在线视频| 国产一区二区三区在线免费观看| 一区在线影院| 一本久道久久综合婷婷鲸鱼| 亚洲欧美综合国产精品一区| 久久久久一区| 欧美视频网址| 激情国产一区二区| 亚洲免费不卡| 欧美亚洲视频在线观看| 麻豆乱码国产一区二区三区| 国产精品v亚洲精品v日韩精品| 国产亚洲福利一区| 99精品国产在热久久| 欧美一区二区三区四区在线| 欧美激情一区二区三区在线视频观看 | 国产一区二区电影在线观看| 尤物视频一区二区| 99精品99| 久久久久久久性| 国产精品av免费在线观看| 国内成人在线| 亚洲视频一二区| 美日韩丰满少妇在线观看| 欧美日韩蜜桃| 激情欧美一区二区| 亚洲欧美另类中文字幕| 蜜臀av在线播放一区二区三区| 欧美午夜精品理论片a级按摩| 黑人操亚洲美女惩罚| 一区二区三区欧美激情| 久久福利一区| 国产精品激情| 亚洲精品少妇| 久久婷婷国产综合国色天香| 国产精品毛片a∨一区二区三区|国 | 久久久综合网站| 国产精品久久久久久福利一牛影视| 在线精品高清中文字幕| 午夜精品福利一区二区三区av| 欧美高清视频在线| 在线播放中文字幕一区| 亚洲欧美制服另类日韩| 欧美日韩成人一区二区| 亚洲高清av| 玖玖在线精品| 韩国av一区二区三区四区| 香蕉久久夜色| 国产精品亚洲第一区在线暖暖韩国| 日韩一级精品| 欧美区日韩区| 亚洲精品一区二区三区蜜桃久| 六十路精品视频| 伊人久久男人天堂| 久久久久久一区二区| 国产一区二区黄色| 欧美日韩一区二区国产| 亚洲综合国产激情另类一区| 午夜在线精品偷拍| 欧美午夜一区二区| 另类亚洲自拍| 在线精品在线| 久久久午夜精品| 久久精品中文| 亚洲深夜av| 欧美精品一区二区精品网| 国产精品性做久久久久久| 国产一区二区三区四区hd| 久久成人资源| 国产精品综合网站| 国产精品一区视频网站| 久久成人在线| 欧美在线free| 性色av一区二区三区| 好吊色欧美一区二区三区四区| 国产精品久久久久一区二区| 久久www成人_看片免费不卡| 亚洲人成在线观看| 亚洲国产成人久久综合| 国产欧亚日韩视频| 亚洲日韩视频| 国产情人综合久久777777| 欧美精品日韩一区| 狂野欧美激情性xxxx| 欧美在线视频免费| 午夜久久一区| 午夜久久一区| 午夜日韩在线观看| 亚洲一区免费| 亚洲一区影院| 亚洲一区二区在| 亚洲一级电影| 亚洲桃花岛网站| 亚洲一级在线观看| 一区二区三区|亚洲午夜| 亚洲精品美女在线观看| 亚洲片国产一区一级在线观看| 在线观看欧美亚洲| 亚洲国产女人aaa毛片在线| 亚洲高清免费视频| 亚洲国产欧洲综合997久久| 亚洲二区在线| 亚洲激情综合| 亚洲人成啪啪网站| 亚洲精品影视在线观看| 亚洲精品日韩综合观看成人91| 亚洲人久久久| 亚洲精品你懂的| 99精品视频免费全部在线| 一本色道久久综合狠狠躁的推荐| 亚洲精品久久久久久久久久久久| 亚洲经典在线看| 一区二区欧美日韩视频| 亚洲影院一区| 欧美一区2区三区4区公司二百| 午夜精品免费在线| 久久精选视频| 欧美承认网站| 国产精品国产三级国产专播品爱网| 国产精品久久午夜| 好吊一区二区三区| 日韩视频国产视频| 午夜一区不卡| 欧美成人蜜桃| 国产精品成人一区二区三区吃奶 | 国产精品99久久久久久白浆小说 |