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

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

接口程序

API之主要目的是提供應(yīng)用程序與開發(fā)人員以訪問一組例程的能力,而又無需訪問源碼,或理解內(nèi)部工作機制的細節(jié)。提供API所定義的功能的軟件稱作此API的實現(xiàn)。API是一種接口,故而是一種抽象。
  • KeilC51中C51程序與匯編程序的接口方法

    C語言程序與匯編語言程序的相互調(diào)用可視為函數(shù)的調(diào)用,只不過此函數(shù)是采用不同語言編寫。在C和匯編程序的相互調(diào)用中,要求匯編程序必須服從Keil C51中對函數(shù)名的轉(zhuǎn)換規(guī)則,同時也要弄清C函數(shù)的參數(shù)傳遞規(guī)則,通過實例詳細介紹Keil C51中C51程序與匯編程序相互調(diào)用以廈匯鳊程序與C51程序相互調(diào)用時的接口建立方法,井蛤出在不同的應(yīng)用中對接口進行簡化的方法

    標簽: KeilC C51 51 程序

    上傳時間: 2013-11-13

    上傳用戶:lina2343

  • 驅(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)建一個新的文件對象。這使得多個句柄可以映射同一個文件對象。當這個文件對象的最后一個用戶級句柄被撤銷后,I/O管理器調(diào)用CleanUp。當沒有任何用戶級和核心級的對文件對象的訪問的時候,I/O管理器調(diào)用Close。如果被打開的設(shè)備不支持指定的功能,則調(diào)用相應(yīng)的Win32將引起錯誤(無效功能)。以前為Windows95編寫的VxD的應(yīng)用程序代碼中可能會在打開設(shè)備的時候使用FILE_FLAG_DELETE_ON_CLOSE屬性。在Windows NT/2000中,建議不要使用這個屬性,因為它將導致沒有特權(quán)的用戶企圖打開這個設(shè)備,這是不可能成功的。I/O管理器將ReadFile和WriteFile的buff參數(shù)轉(zhuǎn)換成IRP域的方法依賴于設(shè)備對象的屬性。當設(shè)備設(shè)置DO_DIRECT_IO標志,I/O管理器將buff鎖住在存儲器中,并且創(chuàng)建了一個存儲在IRP中的MDL域。一個設(shè)備可以通過調(diào)用Kirp::Mdl來存取MDL。當設(shè)備設(shè)置DO_BUFFERED_IO標志,設(shè)備對象分別通過KIrp::BufferedReadDest或 KIrp::BufferedWriteSource為讀或?qū)懖僮鳙@得buff地址。當設(shè)備不設(shè)置DO_BUFFERED_IO標志也不設(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 . . .   } }

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

    上傳時間: 2013-10-17

    上傳用戶:gai928943

  • 使用jtag接口通過網(wǎng)口燒寫程序

    什么是JTAG 到底什么是JTAG呢? JTAG(Joint Test Action Group)聯(lián)合測試行動小組)是一種國際標準測試協(xié)議(IEEE 1149.1兼容),主要用于芯片內(nèi)部測試。現(xiàn)在多數(shù)的高級器件都支持JTAG協(xié)議,如DSP、FPGA器件等。標準的JTAG接口是4線:TMS、 TCK、TDI、TDO,分別為模式選擇、時鐘、數(shù)據(jù)輸入和數(shù)據(jù)輸出線。 JTAG最初是用來對芯片進行測試的,基本原理是在器件內(nèi)部定義一個TAP(Test Access Port&#0;測試訪問口)通過專用的JTAG測試工具對進行內(nèi)部節(jié)點進行測試。JTAG測試允許多個器件通過JTAG接口串聯(lián)在一起,形成一個JTAG鏈,能實現(xiàn)對各個器件分別測試。現(xiàn)在,JTAG接口還常用于實現(xiàn)ISP(In-System rogrammable&#0;在線編程),對FLASH等器件進行編程。 JTAG編程方式是在線編程,傳統(tǒng)生產(chǎn)流程中先對芯片進行預編程現(xiàn)再裝到板上因此而改變,簡化的流程為先固定器件到電路板上,再用JTAG編程,從而大大加快工程進度。JTAG接口可對PSD芯片內(nèi)部的所有部件進行編程 JTAG的一些說明 通常所說的JTAG大致分兩類,一類用于測試芯片的電氣特性,檢測芯片是否有問題;一類用于Debug;一般支持JTAG的CPU內(nèi)都包含了這兩個模塊。 一個含有JTAG Debug接口模塊的CPU,只要時鐘正常,就可以通過JTAG接口訪問CPU的內(nèi)部寄存器和掛在CPU總線上的設(shè)備,如FLASH,RAM,SOC(比如4510B,44Box,AT91M系列)內(nèi)置模塊的寄存器,象UART,Timers,GPIO等等的寄存器。 上面說的只是JTAG接口所具備的能力,要使用這些功能,還需要軟件的配合,具體實現(xiàn)的功能則由具體的軟件決定。 例如下載程序到RAM功能。了解SOC的都知道,要使用外接的RAM,需要參照SOC DataSheet的寄存器說明,設(shè)置RAM的基地址,總線寬度,訪問速度等等。有的SOC則還需要Remap,才能正常工作。運行Firmware時,這些設(shè)置由Firmware的初始化程序完成。但如果使用JTAG接口,相關(guān)的寄存器可能還處在上電值,甚至時錯誤值,RAM不能正常工作,所以下載必然要失敗。要正常使用,先要想辦法設(shè)置RAM。在ADW中,可以在Console窗口通過Let 命令設(shè)置,在AXD中可以在Console窗口通過Set命令設(shè)置。

    標簽: jtag 接口 燒寫程序

    上傳時間: 2013-10-23

    上傳用戶:aeiouetla

  • 基于ARM-Linux的MAX1303接口與驅(qū)動程序設(shè)計

     針對數(shù)據(jù)采集與處理系統(tǒng)的應(yīng)用需求,設(shè)計了嵌入Linux的ARM9處理器LPC3250與16位AD采樣芯片MAX1303的硬件接口和驅(qū)動程序。首先,描述了LPC3250和MAX1303的性能、特點以及硬件接口電路設(shè)計方案。然后,在硬件平臺的基礎(chǔ)上,詳細地闡述了嵌入式Linux下MAX1303驅(qū)動程序的組成模塊和具體實現(xiàn)方法,并給出了部分源代碼以及對設(shè)備驅(qū)動的測試方法。測試結(jié)果表明,系統(tǒng)工作正常、穩(wěn)定,采樣結(jié)果正確,具有實際工程應(yīng)用價值。

    標簽: ARM-Linux 1303 MAX 接口

    上傳時間: 2013-11-21

    上傳用戶:nostopper

  • 點陣式LCD12864接口與程序設(shè)計分析

    點陣式LCD12864接口與程序設(shè)計分析

    標簽: 12864 LCD 點陣式 接口

    上傳時間: 2013-10-30

    上傳用戶:daoxiang126

  • 一個用COM或USB接口連接gsm/gprs手機進行短信收發(fā)的程序,用到的是simense的通訊模塊

    一個用COM或USB接口連接gsm/gprs手機進行短信收發(fā)的程序,用到的是simense的通訊模塊

    標簽: simense gprs COM USB

    上傳時間: 2014-08-21

    上傳用戶:yoleeson

  • i2c總線接口驅(qū)動程序

    i2c總線接口驅(qū)動程序

    標簽: i2c 總線接口 驅(qū)動程序

    上傳時間: 2013-12-18

    上傳用戶:qb1993225

  • 讀寫Smart卡加解密接口的程序

    讀寫Smart卡加解密接口的程序,包括PKCS#11和PKCS#15接口。

    標簽: Smart 讀寫 加解密 接口

    上傳時間: 2014-10-28

    上傳用戶:qw12

  • 61202控制的12864液顯程序,用在我的實際項目中,附接口原理圖

    61202控制的12864液顯程序,用在我的實際項目中,附接口原理圖

    標簽: 61202 12864 控制 接口

    上傳時間: 2015-01-11

    上傳用戶:LouieWu

  • 本程序使用vhdl編寫的jtag接口實現(xiàn)程序,其中有些功能未能實現(xiàn),希望有人能夠幫忙完善!

    本程序使用vhdl編寫的jtag接口實現(xiàn)程序,其中有些功能未能實現(xiàn),希望有人能夠幫忙完善!

    標簽: vhdl jtag 程序 接口

    上傳時間: 2013-12-25

    上傳用戶:kelimu

亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费人成精品欧美精品| 91久久在线| 欧美二区视频| 欧美.com| 欧美精品色一区二区三区| 欧美精品1区2区3区| 免费短视频成人日韩| 欧美午夜精品久久久久久孕妇 | 国产一区自拍视频| 国产日韩精品在线| 亚洲精品国产精品国自产观看浪潮| 亚洲欧洲一区二区三区久久| 一区二区三区四区国产| 欧美在线视频网站| 久久精品首页| 国产精品久久久久久超碰| 国产精品嫩草99av在线| 国产一区av在线| 亚洲日本精品国产第一区| 午夜亚洲激情| 欧美激情精品久久久久久久变态| 欧美视频在线观看免费| 国模精品娜娜一二三区| 亚洲四色影视在线观看| 久久精品在线观看| 欧美日韩国产小视频在线观看| 国产精品手机在线| 日韩亚洲视频| 久久久精彩视频| 欧美日韩国产片| 国产一区二区三区自拍| 国产精品一区二区在线观看网站| 在线观看欧美激情| 亚洲欧美久久| 欧美日韩一级视频| 亚洲精一区二区三区| 久久精品国产在热久久| 欧美日韩免费观看一区=区三区| 国产综合网站| 欧美小视频在线观看| 国产精品日韩欧美| 一本久久综合| 欧美成人免费在线观看| 国内精品久久久久影院优| 亚洲激情视频在线观看| 欧美 日韩 国产 一区| 国产一区二区三区高清播放| 一区二区三区 在线观看视| 美女视频网站黄色亚洲| 亚洲高清不卡在线| 性欧美精品高清| 国产精品v日韩精品v欧美精品网站| 伊人蜜桃色噜噜激情综合| 午夜宅男欧美| 国内自拍亚洲| 久久精品国产第一区二区三区| 欧美三区在线视频| 日韩视频在线永久播放| 欧美日韩另类在线| 亚洲黄色av| 国产精品久久久久毛片大屁完整版 | 亚洲国产黄色片| 狂野欧美激情性xxxx欧美| 国产一区二区精品久久| 性久久久久久久久| 国产欧美日韩视频| 欧美怡红院视频| 艳妇臀荡乳欲伦亚洲一区| 亚洲一区二区三区中文字幕在线 | 国内精品福利| 性亚洲最疯狂xxxx高清| 国产免费观看久久| 午夜精品理论片| 依依成人综合视频| 欧美ed2k| 日韩亚洲精品电影| 欧美日韩精品福利| 亚洲午夜久久久久久尤物| 国产精品久久福利| 校园春色综合网| 国产亚洲毛片在线| 久久久久久久精| 亚洲第一黄色网| 欧美日韩精品免费观看视一区二区| 欧美激情精品久久久久久免费印度 | 99精品欧美一区二区蜜桃免费| 欧美激情中文字幕在线| 99re6这里只有精品| 欧美1区3d| 亚洲欧美日韩中文视频| 国产欧美综合在线| 久久免费国产| 樱桃国产成人精品视频| 国产精品99免视看9| 亚洲欧美福利一区二区| 国产欧美视频在线观看| 久久久久久久91| 亚洲午夜精品在线| 国产一区二区三区丝袜| 一级日韩一区在线观看| 欧美一区国产二区| 亚洲黄色精品| 国产日韩欧美日韩大片| 欧美激情影院| 久久久久久精| 一区二区三区|亚洲午夜| 精品动漫一区二区| 国产精品美女www爽爽爽视频| 老司机精品导航| 亚洲一区精品在线| 激情久久久久| 国产伦精品一区二区三区免费| 欧美精品二区三区四区免费看视频| 欧美在线免费一级片| 中文在线不卡| 亚洲乱码国产乱码精品精天堂| 国产亚洲欧美一区在线观看| 国产精品a级| 欧美美女bbbb| 免费中文日韩| 久久这里有精品15一区二区三区| 亚洲综合第一页| 宅男噜噜噜66一区二区| 亚洲精品韩国| 亚洲激情在线观看| 亚洲国产精品一区二区尤物区 | 亚洲电影在线免费观看| 国产一区二区欧美日韩| 国产精品亚洲成人| 国产精品久久久久一区二区三区共 | 亚洲男女毛片无遮挡| 亚洲黄色在线| 亚洲国产成人91精品| 极品尤物av久久免费看| 在线视频你懂得一区| 亚洲精品免费一区二区三区| 亚洲国产1区| 亚洲激情网址| 99国产精品私拍| 亚洲视频中文字幕| 亚洲一级片在线看| 亚洲欧美国产精品桃花| 先锋影音网一区二区| 久久久xxx| 蜜桃av综合| 欧美理论视频| 欧美四级电影网站| 国产精品久久久对白| 国产欧美在线播放| 韩日精品视频一区| 亚洲国产精品一区二区www在线| 亚洲国产精品成人综合色在线婷婷 | 最新亚洲激情| 亚洲精品在线电影| 一本大道久久精品懂色aⅴ| 在线视频亚洲一区| 亚洲欧美日韩第一区| 欧美一级专区免费大片| 久久国产精彩视频| 美女图片一区二区| 欧美日韩日本国产亚洲在线| 国产精品二区在线观看| 国产欧美视频在线观看| 黄色亚洲精品| 99综合视频| 欧美一激情一区二区三区| 久久精品论坛| 欧美激情精品久久久久久久变态| 欧美日韩三区| 国产在线欧美| 亚洲精选中文字幕| 亚洲综合丁香| 久久一区二区三区超碰国产精品| 欧美人在线观看| 国产精品自拍网站| 亚洲国产精品传媒在线观看 | 蜜臀va亚洲va欧美va天堂| 欧美精品在线观看91| 国产精品视频专区| 亚洲激情在线激情| 性欧美1819sex性高清| 女仆av观看一区| 国产精品白丝jk黑袜喷水| 一区二区三区在线免费观看| 亚洲免费精彩视频| 久久精品国产精品亚洲综合| 欧美日韩成人在线播放| 狠狠色狠狠色综合人人| 一区二区三区日韩| 美女精品视频一区| 国产精品毛片a∨一区二区三区| 亚洲国产一区在线| 欧美一区二区精品久久911| 欧美日本国产一区| 红桃视频国产一区| 午夜精品久久久久久| 欧美色播在线播放| 亚洲国产精品久久久久婷婷884 | 国产精品wwwwww| 亚洲黄色成人|