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

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

Read-modify-write

  • Wishbone to LPC (Low-Pin Count) Bridge, includes master and slave modules. Supports 8-bit I/O Read a

    Wishbone to LPC (Low-Pin Count) Bridge, includes master and slave modules. Supports 8-bit I/O Read and Write cycles, 8-bit Memory Read/Write cycles, DMA cycles, and up to 32-bit Firmware memory read/write cycles. Serial IRQ support is also provided. None of this has been tested (yet) with a third-party LPC Peripheral or Host.

    標(biāo)簽: Wishbone Supports includes Low-Pin

    上傳時間: 2014-12-20

    上傳用戶:古谷仁美

  • 驅(qū)動程序與應(yīng)用程序的接口

    有兩種方式可以讓設(shè)備和應(yīng)用程序之間聯(lián)系:1. 通過為設(shè)備創(chuàng)建的一個符號鏈;2. 通過輸出到一個接口WDM驅(qū)動程序建議使用輸出到一個接口而不推薦使用創(chuàng)建符號鏈的方法。這個接口保證PDO的安全,也保證安全地創(chuàng)建一個惟一的、獨立于語言的訪問設(shè)備的方法。一個應(yīng)用程序使用Win32APIs來調(diào)用設(shè)備。在某個Win32 APIs和設(shè)備對象的分發(fā)函數(shù)之間存在一個映射關(guān)系。獲得對設(shè)備對象訪問的第一步就是打開一個設(shè)備對象的句柄。 用符號鏈打開一個設(shè)備的句柄為了打開一個設(shè)備,應(yīng)用程序需要使用CreateFile。如果該設(shè)備有一個符號鏈出口,應(yīng)用程序可以用下面這個例子的形式打開句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3",  GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ,  NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路徑名的前綴“\\.\”告訴系統(tǒng)本調(diào)用希望打開一個設(shè)備。這個設(shè)備必須有一個符號鏈,以便應(yīng)用程序能夠打開它。有關(guān)細節(jié)查看有關(guān)Kdevice和CreateLink的內(nèi)容。在上述調(diào)用中第一個參數(shù)中前綴后的部分就是這個符號鏈的名字。注意:CreatFile中的第一個參數(shù)不是Windows 98/2000中驅(qū)動程序(.sys文件)的路徑。是到設(shè)備對象的符號鏈。如果使用DriverWizard產(chǎn)生驅(qū)動程序,它通常使用類KunitizedName來構(gòu)成設(shè)備的符號鏈。這意味著符號鏈名有一個附加的數(shù)字,通常是0。例如:如果鏈接名稱的主干是L“TestDevice”那么在CreateFile中的串就該是“\\\\.\\TestDevice0”。如果應(yīng)用程序需要被覆蓋的I/O,第六個參數(shù)(Flags)必須或上FILE_FLAG_OVERLAPPED。 使用一個輸出接口打開句柄用這種方式打開一個句柄會稍微麻煩一些。DriverWorks庫提供兩個助手類來使獲得對該接口的訪問容易一些,這兩個類是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass類封裝了一個設(shè)備信息集,該信息集包含了特殊類中的所有設(shè)備接口信息。應(yīng)用程序能有用CdeviceInterfaceClass類的一個實例來獲得一個或更多的CdeviceInterface類的實例。CdeviceInterface類是一個單一設(shè)備接口的抽象。它的成員函數(shù)DevicePath()返回一個路徑名的指針,該指針可以在CreateFile中使用來打開設(shè)備。下面用一個小例子來顯示這些類最基本的使用方法: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;} 在設(shè)備中執(zhí)行I/O操作一旦應(yīng)用程序獲得一個有效的設(shè)備句柄,它就能使用Win32 APIs來產(chǎn)生到設(shè)備對象的IRPs。下面的表顯示了這種對應(yīng)關(guān)系。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 需要解釋一下設(shè)備類成員的Close和CleanUp:CreateFile使內(nèi)核為設(shè)備創(chuàng)建一個新的文件對象。這使得多個句柄可以映射同一個文件對象。當(dāng)這個文件對象的最后一個用戶級句柄被撤銷后,I/O管理器調(diào)用CleanUp。當(dāng)沒有任何用戶級和核心級的對文件對象的訪問的時候,I/O管理器調(diào)用Close。如果被打開的設(shè)備不支持指定的功能,則調(diào)用相應(yīng)的Win32將引起錯誤(無效功能)。以前為Windows95編寫的VxD的應(yīng)用程序代碼中可能會在打開設(shè)備的時候使用FILE_FLAG_DELETE_ON_CLOSE屬性。在Windows NT/2000中,建議不要使用這個屬性,因為它將導(dǎo)致沒有特權(quán)的用戶企圖打開這個設(shè)備,這是不可能成功的。I/O管理器將ReadFile和WriteFile的buff參數(shù)轉(zhuǎn)換成IRP域的方法依賴于設(shè)備對象的屬性。當(dāng)設(shè)備設(shè)置DO_DIRECT_IO標(biāo)志,I/O管理器將buff鎖住在存儲器中,并且創(chuàng)建了一個存儲在IRP中的MDL域。一個設(shè)備可以通過調(diào)用Kirp::Mdl來存取MDL。當(dāng)設(shè)備設(shè)置DO_BUFFERED_IO標(biāo)志,設(shè)備對象分別通過KIrp::BufferedReadDest或 KIrp::BufferedWriteSource為讀或?qū)懖僮鳙@得buff地址。當(dāng)設(shè)備不設(shè)置DO_BUFFERED_IO標(biāo)志也不設(shè)置DO_DIRECT_IO,內(nèi)核設(shè)置IRP 的UserBuffer域來對應(yīng)ReadFile或WriteFile中的buff參數(shù)。然而,存儲區(qū)并沒有被鎖住而且地址只對調(diào)用進程有效。驅(qū)動程序可以使用KIrp::UserBuffer來存取IRP域。對于DeviceIoControl調(diào)用,buffer參數(shù)的轉(zhuǎn)換依賴于特殊的I/O控制代碼,它不在設(shè)備對象的特性中。宏CTL_CODE(在winioctl.h中定義)用來構(gòu)造控制代碼。這個宏的其中一個參數(shù)指明緩沖方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表顯示了這些方法和與之對應(yīng)的能獲得輸入緩沖與輸出緩沖的KIrp中的成員函數(shù):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,系統(tǒng)分配一個單一的緩沖來作為輸入與輸出。驅(qū)動程序必須在向輸出緩沖放數(shù)據(jù)之前拷貝輸入數(shù)據(jù)。驅(qū)動程序通過調(diào)用KIrp::IoctlBuffer獲得緩沖地址。在完成時,I/O管理器從系統(tǒng)緩沖拷貝數(shù)據(jù)到提供給Ring 3級調(diào)用者使用的緩沖中。驅(qū)動程序必須在結(jié)束前存儲拷貝到IRP的Information成員中的數(shù)據(jù)個數(shù)。如果控制代碼不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,則DeviceIoControl的參數(shù)呈現(xiàn)不同的含義。參數(shù)InputBuffer被拷貝到一個系統(tǒng)緩沖,這個緩沖驅(qū)動程序可以通過調(diào)用KIrp::IoctlBuffer。參數(shù)OutputBuffer被映射到KMemory對象,驅(qū)動程序?qū)@個對象的訪問通過調(diào)用KIrp::Mdl來實現(xiàn)。對于METHOD_OUT_DIRECT,調(diào)用者必須有對緩沖的寫訪問權(quán)限。注意,對METHOD_NEITHER,內(nèi)核只提供虛擬地址;它不會做映射來配置緩沖。虛擬地址只對調(diào)用進程有效。這里是一個用METHOD_BUFFERED的例子:首先,使用宏CTL_CODE來定義一個IOCTL代碼:#define IOCTL_MYDEV_GET_FIRMWARE_REV \CTL_CODE (FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)現(xiàn)在使用一個DeviceIoControl調(diào)用:BOOLEAN b;CHAR FirmwareRev[60];ULONG FirmwareRevSize;b = DeviceIoControl(hDevice, IOCTL_MYDEV_GET_VERSION_STRING,  NULL, // no input  注意,這里放的是包含有執(zhí)行操作命令的字符串指針  0, FirmwareRev,      //這里是output串指針,存放從驅(qū)動程序中返回的字符串。sizeof(FirmwareRev),& FirmwareRevSize,  NULL // not overlapped I/O );如果輸出緩沖足夠大,設(shè)備拷貝串到里面并將拷貝的資結(jié)束設(shè)置到FirmwareRevSize中。在驅(qū)動程序中,代碼看起來如下所示: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 . . .   } }

    標(biāo)簽: 驅(qū)動程序 應(yīng)用程序 接口

    上傳時間: 2013-10-17

    上傳用戶:gai928943

  • video editing for is streamlined for fast linear operations over video. It has batch-processing capa

    video editing for is streamlined for fast linear operations over video. It has batch-processing capabilities for processing large numbers of files and can be extended with third-party video filters. VirtualDub is mainly geared toward processing AVI files, although it can read (not write) MPEG-1 and also handle sets of BMP images.

    標(biāo)簽: video batch-processing streamlined operations

    上傳時間: 2014-01-06

    上傳用戶:fhzm5658

  • Delphi and C++ Builder component for direct access to IO ports on Windows 95, Windows 98 and Windows

    Delphi and C++ Builder component for direct access to IO ports on Windows 95, Windows 98 and Windows NT/2000. Provides properties for reading and writing bytes, words and doublewords from/to IO ports. New fast block data transfer methods enable to read and write megabytes of data per second.

    標(biāo)簽: Windows and component Builder

    上傳時間: 2015-10-25

    上傳用戶:bjgaofei

  • (1) 給定一段符合Pascal子集語法的語言

    (1) 給定一段符合Pascal子集語法的語言,能成功轉(zhuǎn)換成C語言; (2) 一個簡單的說明文檔; (3) 2007.7.14之前上傳到ftp:// C07:C07@10.11.3.71/upload,用學(xué)號建立自己的目錄; (4) (可額外加分5分)若有出錯處理功能,請在說明文檔中寫明可以處理哪幾項錯誤。 注意事項: (1) 兩人一組 (2) 可以使用詞法、語法自動生成工具,windows下有Flex,Bison,Linux下有Lex,Yacc,Java的有Jlex,JavaCC,ANTLR等 (3) 不用考慮Pascal和C的關(guān)鍵詞不同問題,即Pascal子集語言中假設(shè)不出現(xiàn)int,for等作為變量標(biāo)志符 (4) read()和write()可用由scanf(),printf()等組成的語句轉(zhuǎn)換。 (5) 如果有疑問可以發(fā)信給我 xpqiu@fudan.edu.cn.

    標(biāo)簽: Pascal 語言

    上傳時間: 2015-11-20

    上傳用戶:talenthn

  • xml delphi中讀寫XML文件。 例子中說明如何更加msxml類實現(xiàn)讀xml文件

    xml delphi中讀寫XML文件。 例子中說明如何更加msxml類實現(xiàn)讀xml文件,與寫xml文件的方法-were read and write XML documents

    標(biāo)簽: xml delphi msxml XML

    上傳時間: 2016-02-04

    上傳用戶:hjshhyy

  • 一、目的要求 1、用高級語言編寫和調(diào)試一個簡單的文件系統(tǒng)

    一、目的要求 1、用高級語言編寫和調(diào)試一個簡單的文件系統(tǒng),模擬文件管理的工作過程。從而對各種文件操作命令的實質(zhì)內(nèi)容和執(zhí)行過程有比較深入的了解。 2、要求設(shè)計一個 n個用戶的文件系統(tǒng),每次用戶可保存m個文件,用戶在一次運行中只能打開一個文件,對文件必須設(shè)置保護措施,且至少有Create、delete、open、close、read、write等命令。

    標(biāo)簽: 高級語言 編寫 文件系統(tǒng) 調(diào)試

    上傳時間: 2014-10-10

    上傳用戶:fredguo

  • Enhanced version of the Serial Peripheral Interface available on Motorola s MC68HC11 family of CPUs.

    Enhanced version of the Serial Peripheral Interface available on Motorola s MC68HC11 family of CPUs.Enhancements include a wider supported operating frequency range, 4deep read and write fifos, and programmable transfer count dependent interrupt generation. As with the SPI found in MC68HC11 processors the core features programmable clock phase [CPHA] and clock polarity [CPOL]. The core features an 8bit wishbone interface. Very simple, very small.

    標(biāo)簽: Peripheral Interface available Enhanced

    上傳時間: 2014-12-06

    上傳用戶:invtnewer

  • It contains a vhdl description of the external bus interface unit for 68000 processor. currently onl

    It contains a vhdl description of the external bus interface unit for 68000 processor. currently only read and write cycle are supported

    標(biāo)簽: description currently interface processor

    上傳時間: 2017-03-16

    上傳用戶:chenlong

  • Learn how to: * Tokenize a null-terminated string * Create a search and re

    Learn how to: * Tokenize a null-terminated string * Create a search and replace function for strings * Implement subtraction for string objects * Use the vector, deque, and list sequence containers * Use the container adaptors stack, queue, and priority_queue * Use the map, multimap, set, and multiset associative containers * Reverse, rotate, and shuffle a sequence * Create a function object * Use binders, negators, and iterator adapters * Read and write files * Use stream iterators to handle file I/O * Use exceptions to handle I/O errors * Create custom inserters and extractors * Format date, time, and numeric data * Use facets and the localization library * Overload the [ ], ( ), and -> operators * Create an explicit constructor * And much, much more

    標(biāo)簽: null-terminated Tokenize Create string

    上傳時間: 2014-01-18

    上傳用戶:yph853211

主站蜘蛛池模板: 无极县| 宝应县| 罗平县| 仙居县| 陆丰市| 夏河县| 吴桥县| 方山县| 南丹县| 尼勒克县| 西平县| 徐州市| 廉江市| 桓仁| 当涂县| 大港区| 河曲县| 阜南县| 太和县| 泗洪县| 洪洞县| 轮台县| 谢通门县| 凤庆县| 同德县| 舞阳县| 会同县| 合作市| 龙门县| 英吉沙县| 南康市| 天镇县| 哈尔滨市| 黄骅市| 桐城市| 东乡县| 海宁市| 孟州市| 西平县| 霍山县| 沁源县|