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

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

ReadFile

  • 包含8個文件:type.h, borrow.c, createfile.c, MainMenuControl.C, reader.c, ReadFile.c, search.c, writefile.

    包含8個文件:type.h, borrow.c, createfile.c, MainMenuControl.C, reader.c, ReadFile.c, search.c, writefile.c

    標簽: MainMenuControl createfile writefile ReadFile

    上傳時間: 2013-12-22

    上傳用戶:xuanchangri

  • Winsock2的發布使得Socket I/O有了和文件I/O統一的接口。我們可以通過使用Win32文件操縱函數ReadFile和WriteFile來進行Socket I/O。伴隨而來的

    Winsock2的發布使得Socket I/O有了和文件I/O統一的接口。我們可以通過使用Win32文件操縱函數ReadFile和WriteFile來進行Socket I/O。伴隨而來的,用于普通文件I/O的重疊I/O模型和完成端口模型對Socket I/O也適用了。這些模型的優點是可以達到更佳的系統性 能,但是實現較為復雜,里面涉及較多的C語言技巧。例如我們在完成端口模型中會經常用到所謂的“尾隨數據”。

    標簽: Socket WriteFile Winsock2 ReadFile

    上傳時間: 2014-12-03

    上傳用戶:fxf126@126.com

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

    有兩種方式可以讓設備和應用程序之間聯系: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

  • 從串口讀取數據

    從串口讀取數據,有兩種方法,1、每接收一個EV_RXCHAR,就用ReadFile讀一次,這樣我覺得太恐怖了。2、接收到一個EV_RXCHAR后,等一定數據量的CPU周期(GetTickCount),再一次性讀取緩沖區里的數據。這樣做,一般情況下不會有問題,但是,如果數據很多,過了“一定數據量的CPU周期”,還沒收完數據怎么辦?就會少讀數據了。 我用三個線程序來完成串口數據的接收,其實就是第一種方法的變種: 一個偵聽EV_RXCHAR,一個對EV_RXCHAR進行分析,其實就是超時判斷。如果接收到一個消息后,一段時間沒收到下一個EV_RXCHAR,就認為是一個數據包的結束。這個線程就會通知數據接收線程,進行數據接收。一般同一包數據,兩個字符之間的時間間隔,應該很小了吧,而兩個數據包之間的間隔,應該不會太小吧?。ㄟ@個地方我不清楚,猜的:( :) )最后一個線程,是接收數據的。

    標簽: 串口 讀取 數據

    上傳時間: 2014-01-24

    上傳用戶:cylnpy

  • 從串口讀取數據

    從串口讀取數據,有兩種方法, 1、每接收一個EV_RXCHAR,就用ReadFile讀一次,這樣我覺得太恐怖了。 2、接收到一個EV_RXCHAR后,等一定數據量的CPU周期(GetTickCount),再一次性讀取緩沖區里的數據。這樣做,一般情況下不會有問題,但是,如果數據很多,過了“一定數據量的CPU周期”,還沒收完數據怎么辦?就會少讀數據了。 我用三個線程序來完成串口數據的

    標簽: 串口 讀取 數據

    上傳時間: 2015-03-23

    上傳用戶:qb1993225

  • USB驅動協議的簡化版。如果你想打開一個USB管道

    USB驅動協議的簡化版。如果你想打開一個USB管道,你首先要知道這種USB設備的GUID和管理道名稱,獲取句柄以后就可以使用ReadFile/WriteFile進行讀寫了!

    標簽: USB 驅動 協議

    上傳時間: 2014-01-10

    上傳用戶:zjf3110

  • VC++中使用內存映射文件處理大文件,文件操作是應用程序最為基本的功能之一

    VC++中使用內存映射文件處理大文件,文件操作是應用程序最為基本的功能之一,Win32 API 和MFC 均提供有支持 文件處理的函數和類,常用的有Win32 API 的CreateFile()、WriteFile()、 ReadFile()和MFC 提供的CFile 類等

    標簽: VC 內存映射 文件處理 應用程序

    上傳時間: 2013-12-24

    上傳用戶:趙云興

  • 如果你想打開一個USB管道

    如果你想打開一個USB管道,你首先要知道這種USB設備的GUID和管理道名稱, 獲取句柄以后就可以使用ReadFile/WriteFile進行讀寫了!

    標簽: USB

    上傳時間: 2013-12-18

    上傳用戶:dancnc

  • //打開 USB 口讀寫, 由驅動程序的 Pipe 名確定 HANDLE hPipe = OpenMyDevPipe("MyPipe1") //驅動程序里面的 Pipe 名, 對應訪問某個端點

    //打開 USB 口讀寫, 由驅動程序的 Pipe 名確定 HANDLE hPipe = OpenMyDevPipe("MyPipe1") //驅動程序里面的 Pipe 名, 對應訪問某個端點的 I/O, 這里我亂寫的, 需要與驅動一致 if(hPipe != INVALID_HANDLE_VALUE) //打開 Pipe 成功 { ReadFile(hPipe, Buffer, BufSize, &nBytesRead, NULL) //從 hPipe 里讀取數據到 Buffer 里 //WriteFile(hPipe, Buffer, BytesToWrite, &nBytesWritten, NULL) //把 Buffer 里面的 BytesToWrite 字節寫入 hPipe CloseHandle(hPipe) } //使用 DeviceIoControl 訪問 USB 設備 HANDLE hDevice = OpenMyDevice() if(hDevice != INVALID_HANDLE_VALUE) //打開設備成功 { //這些 DeviceIoControl 功能都是由設備定義的, 具體看設備和驅動的資料 if(DeviceIoControl(hDevice, IOCTL_READ_xxxx, &IOBlock, sizeof(IOBLOCK), &c, 1, &nBytes, NULL)) { //成功 } CloseHandle(hDevice) }

    標簽: Pipe OpenMyDevPipe MyPipe1 HANDLE

    上傳時間: 2014-11-25

    上傳用戶:stampede

  • 實現串行通訊的相關API函數 API函數不僅提供了打開和讀寫通訊端口的操作方法

    實現串行通訊的相關API函數 API函數不僅提供了打開和讀寫通訊端口的操作方法,還提供了名目繁多的函數以支持對串行通訊的各種操作。 函數名 作用 CreateFile 打開串口 GetCommState 檢測串口設置 SetCommState 設置串口 BuilderCommDCB 用字符串中的值來填充設備控制塊 GetCommTimeouts 檢測通信超時設置 SetCommTimeouts 設置通信超時參數 SetCommMask 設定被監控事件 WaitCommEvent 等待被監控事件發生 WaitForMultipleObjects 等待多個被監測對象的結果 WriteFile 發送數據 ReadFile 接收數據 GetOverlappedResult 返回最后重疊(異步)操作結果 PurgeComm 清空串口緩沖區,退出所有相關操作 ClearCommError 更新串口狀態結構體,并清除所有串口硬件錯誤 CloseHandle 關閉串行口

    標簽: API 函數 串行通訊 讀寫

    上傳時間: 2013-11-30

    上傳用戶:磊子226

亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美在线一二三四区| 欧美性做爰毛片| 在线精品高清中文字幕| 欧美日韩在线免费观看| 久久精品成人欧美大片古装| 亚洲最新在线视频| 亚洲国产另类 国产精品国产免费| 欧美日韩在线大尺度| 麻豆精品视频在线观看视频| 欧美在现视频| 午夜精品国产更新| 亚洲图中文字幕| 中文av一区二区| 亚洲婷婷在线| 亚洲视屏在线播放| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 国产亚洲a∨片在线观看| 国产精品美女www爽爽爽| 亚洲视频在线一区| 欧美无砖砖区免费| 亚洲欧洲日产国产综合网| 一本大道久久精品懂色aⅴ | 久久精品国产清高在天天线| 一区二区三区回区在观看免费视频| 日韩亚洲欧美成人| 亚洲激情一区二区三区| 亚洲国产综合视频在线观看| 亚洲欧洲精品成人久久奇米网| 在线国产精品一区| 亚洲精品一区二| 亚洲美女毛片| 亚洲伊人一本大道中文字幕| 午夜精品久久久久| 久久精品男女| 欧美亚洲免费在线| 牛人盗摄一区二区三区视频| 在线免费观看欧美| 在线观看日韩专区| 国产在线播放一区二区三区| 亚洲日本一区二区| 玖玖国产精品视频| 一卡二卡3卡四卡高清精品视频| 亚洲韩国精品一区| 欧美午夜精品久久久久久超碰| 亚洲黄色在线| 亚洲欧洲日韩女同| 久久综合久色欧美综合狠狠 | 日韩视频在线观看一区二区| 99视频+国产日韩欧美| 亚洲日本成人女熟在线观看| 艳女tv在线观看国产一区| 亚洲欧美一区二区激情| 久久只有精品| 欧美三级欧美一级| 久久国产精彩视频| 一区二区三区欧美亚洲| 欧美人交a欧美精品| 亚洲日韩中文字幕在线播放| 国产精品久久久久久久久| 久久一区二区三区超碰国产精品| 久久精品论坛| 国产日韩欧美高清| 欧美日韩精品国产| 欧美一二三视频| 国产精品日韩精品欧美在线| 国产欧美日韩在线| 亚洲免费观看高清完整版在线观看熊 | 欧美视频二区36p| 在线精品视频在线观看高清 | 欧美一区二区视频在线| 欧美国产日韩一区二区三区| 国产精品视频精品| 亚洲一区二区在线播放| 国产精品xnxxcom| 午夜伦理片一区| 国产精品福利在线观看网址| 欧美激情一区二区三区在线视频观看| 日韩午夜激情| 欧美日韩国产亚洲一区 | 亚洲在线视频观看| 国产手机视频一区二区| 欧美国产第一页| 免费观看日韩| 麻豆国产精品777777在线| 久久成人免费日本黄色| 欧美在线www| 久久久久久伊人| 9久草视频在线视频精品| 在线中文字幕日韩| 欧美一区二区播放| 国产精品区一区| 午夜久久资源| 亚洲日本在线视频观看| 国产视频一区三区| 精品动漫av| 亚洲影视在线播放| 欧美成人国产| 国产一区二区三区久久 | 国产欧美日本| 最新亚洲一区| 久久九九精品99国产精品| 欧美小视频在线观看| 亚洲国产婷婷香蕉久久久久久99| 欧美一区二区视频网站| 欧美色播在线播放| 亚洲日本成人| 久久久中精品2020中文| 欧美日韩在线一区二区| 国产精品天美传媒入口| 亚洲激情自拍| 欧美日韩高清一区| 国产精品一区二区在线观看不卡 | 亚洲国产另类 国产精品国产免费| 精品成人乱色一区二区| 日韩午夜激情av| 欧美激情在线播放| 欧美午夜性色大片在线观看| 亚洲精品中文字幕在线| 国产欧美日本| 亚洲裸体俱乐部裸体舞表演av| 国产精品免费网站在线观看| 国产一区二区三区丝袜| 亚洲精品综合| 欧美大片在线观看一区| 国内精品久久久久久影视8| 欧美在现视频| 欧美肥婆在线| 尤物99国产成人精品视频| 亚洲午夜羞羞片| 欧美午夜女人视频在线| 国产欧美不卡| 欧美影院精品一区| 国产精品亚洲欧美| 中日韩美女免费视频网址在线观看 | 欧美一区二区三区播放老司机| 久久露脸国产精品| 99国产精品私拍| 欧美午夜在线观看| 亚洲国产精品va在线观看黑人| 久久久久国产一区二区| 国产日韩精品在线观看| 麻豆久久久9性大片| 亚洲国产日韩综合一区| 免费看的黄色欧美网站| 亚洲国产精品尤物yw在线观看| 国产精品理论片| 欧美一级视频精品观看| 国产日本欧美一区二区三区| 欧美亚洲在线| 一本大道av伊人久久综合| 国产精品久久久久久久第一福利| 亚洲欧美国产一区二区三区| 国产精品热久久久久夜色精品三区| 猫咪成人在线观看| 一区二区三区回区在观看免费视频| 国产欧美大片| 欧美网站在线| 欧美成熟视频| 欧美大片网址| 亚洲综合精品自拍| 国产色爱av资源综合区| 欧美激情视频一区二区三区免费 | 欧美国产欧美综合| 欧美在线在线| 在线中文字幕日韩| 伊人影院久久| 国产一区二区av| 欧美在线免费视屏| 亚洲片区在线| 一区二区视频欧美| 国产精品日韩欧美综合| 午夜精品www| 欧美亚洲自偷自偷| 日韩午夜激情| 国产一区二区在线观看免费播放 | 日韩一区二区免费看| 亚洲黄色av一区| 激情久久一区| 国产精品免费小视频| 欧美三级韩国三级日本三斤| 国产精品尤物| 国产精品视频不卡| 亚洲国产成人久久综合一区| 亚洲高清不卡av| 欧美日韩天堂| 红桃视频一区| 亚洲精品久久7777| 在线视频精品一区| 久久国产精品久久精品国产| 欧美日韩精品一区二区在线播放| 国产精品美女久久福利网站| 欧美视频在线观看视频极品 | 欧美大胆a视频| 欧美性做爰毛片| 亚洲国产一二三| 99精品福利视频| 久久超碰97中文字幕| 国产精品sm| 亚洲国产日韩精品| 午夜一区二区三区在线观看|