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

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

perror

  • //初始化 if(initscr() == NULL) { perror("initcurs") exit(EXIT_FAILURE) } //設(shè)置模式

    //初始化 if(initscr() == NULL) { perror("initcurs") exit(EXIT_FAILURE) } //設(shè)置模式 cbreak() noecho() keypad(stdscr, TRUE) //建立窗口 win = newwin(h, w, 3, 20) box(win, 0, 0) keypad(win, TRUE) wmove(win, cury, curx) mvaddstr(16, 1, "Press arrow keys to move the cursor within the window.\n") mvaddstr(17, 1, "Press q to quit.\n") refresh() wrefresh(win)

    標(biāo)簽: EXIT_FAILURE initcurs initscr perror

    上傳時間: 2013-12-20

    上傳用戶:FreeSky

  • //初始化 if(initscr() == NULL) { perror("initcurs") exit(EXIT_FAILURE) } cbreak()

    //初始化 if(initscr() == NULL) { perror("initcurs") exit(EXIT_FAILURE) } cbreak() noecho() keypad(stdscr, TRUE) //建立菜單項 for(i=0 i<N_ITEMS i++){ items[i] = new_item(months[i], "") } //建立菜單 mymenu = new_menu(items) //設(shè)置為5行單列的菜單 set_menu_format(mymenu, 5, 1) set_menu_mark(mymenu, "*") //獲得菜單的行數(shù)很列數(shù) scale_menu(mymenu, &mrows, &mcols) //建立窗口和子窗口 win = newwin(mrows + 2, mcols + 2, 3, 30) keypad(win, TRUE) box(win, 0, 0) subwin = derwin(win, 0, 0, 1, 1) //設(shè)置菜單的窗口 set_menu_sub(mymenu, subwin) //在子窗口上放置菜單 post_menu(mymenu) refresh() wrefresh(win)

    標(biāo)簽: EXIT_FAILURE initcurs initscr cbreak

    上傳時間: 2013-11-29

    上傳用戶:小眼睛LSL

  • 驅(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)細(xì)節(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

  • client socket include <sys/types.h> include <sys/socket.h> include <stdio.h> i

    client socket include <sys/types.h> include <sys/socket.h> include <stdio.h> include <netinet/in.h> include <arpa/inet.h> include <unistd.h> int main() { int sockfd int len struct sockaddr_in address int result char ch = A sockfd = socket(AF_INET, SOCK_STREAM, 0) address.sin_family = AF_INET address.sin_addr.s_addr = inet_addr("127.0.0.1") address.sin_port = 9734 len = sizeof(address) result = connect(sockfd, (struct sockaddr *)&address, len) if(result == -1) { perror("oops: client") exit(1) } write(sockfd, &ch, 1) read(sockfd, &ch, 1) printf("char from server = c\n", ch) close(sockfd) exit(0) }

    標(biāo)簽: include socket sys gt

    上傳時間: 2017-07-29

    上傳用戶:wab1981

亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91久久综合亚洲鲁鲁五月天| 国产精品不卡在线| 在线免费不卡视频| 在线精品观看| 亚洲小说欧美另类婷婷| 欧美日本高清| 欧美日韩综合另类| 国产伊人精品| 在线亚洲免费| 久久精品在这里| 欧美视频中文在线看 | 欧美91视频| 欧美 日韩 国产一区二区在线视频 | 久久精品91久久久久久再现| 欧美日韩中文精品| 国产一区二区日韩精品| 亚洲精品一区久久久久久 | 久久嫩草精品久久久久| 欧美精品v国产精品v日韩精品 | 国产有码在线一区二区视频| 欧美人与禽猛交乱配| 欧美在线观看视频| 久久久久久黄| 欧美在线啊v一区| 亚洲欧美另类国产| 麻豆久久精品| 国产一本一道久久香蕉| 国产精品美女一区二区在线观看| 欧美激情五月| 在线观看欧美黄色| 久久成人免费视频| 国产精品午夜在线观看| 亚洲精品一区二区在线| 麻豆乱码国产一区二区三区| 国产三级欧美三级| 亚洲综合国产精品| 欧美日韩亚洲一区| 日韩一二在线观看| 欧美激情欧美激情在线五月| 亚洲三级视频| 欧美人与性动交a欧美精品| 一级日韩一区在线观看| 欧美电影美腿模特1979在线看 | 亚洲国产第一页| 欧美精品一区二区三区很污很色的| 久久久久久久久久码影片| 国产精品久久久久久久久免费樱桃 | 国产在线精品一区二区中文| 欧美在线观看www| 亚洲精品国产欧美| 国产精品嫩草99a| 亚洲一区中文| 国产自产高清不卡| 美女日韩在线中文字幕| 999在线观看精品免费不卡网站| 亚洲精品久久久久中文字幕欢迎你| 欧美一区二粉嫩精品国产一线天| 亚洲一区日韩在线| 国产性做久久久久久| 久久久国产91| 国产精品高潮呻吟视频| 欧美精品在线观看91| 在线观看国产欧美| 亚洲国产成人午夜在线一区 | 亚洲精品国产品国语在线app| 久久激情视频免费观看| 伊人成人开心激情综合网| 欧美精品一区二区精品网 | 女人香蕉久久**毛片精品| 欧美日韩午夜精品| 一区二区高清视频| 国产精品伊人日日| 欧美韩日一区| 亚洲一区成人| 日韩视频一区二区三区在线播放| 国产精品日本一区二区| 欧美不卡视频| 老色鬼久久亚洲一区二区| 久久成人一区二区| 最新成人在线| 国产日产欧产精品推荐色| 欧美高清视频在线| 久久久久久久精| 欧美91福利在线观看| 中文日韩在线视频| 好吊色欧美一区二区三区视频| 欧美成人精品在线播放| 免费成人av在线看| 欧美成人精品一区二区三区| 亚洲日本中文| 久久黄色网页| 99国产精品99久久久久久粉嫩| 亚洲精品社区| 欧美日本免费| 欧美三级不卡| 亚洲经典一区| 国产一区二区久久久| 欧美日韩一卡二卡| 欧美大片在线观看| 久久黄色小说| 久久国产精品色婷婷| 午夜精品久久久久久99热| 一区二区精品| 一本一本久久a久久精品综合妖精| 亚洲大片在线观看| 国产资源精品在线观看| 欧美日韩国产二区| 欧美久久九九| 国产精品成人观看视频免费| 欧美精品久久久久久久免费观看 | 欧美精品久久久久久久久老牛影院 | 亚洲精品影视| 91久久精品一区二区三区| 在线精品亚洲| 亚洲国产欧美日韩| 亚洲毛片播放| 亚洲一级片在线观看| 亚洲欧美国产制服动漫| 香蕉成人久久| 久久视频一区| 欧美精品在线视频| 欧美日韩精品一区二区三区| 欧美调教视频| 国产一区二区高清| 亚洲国产欧美日韩另类综合| 在线亚洲一区二区| 欧美一级夜夜爽| 久久亚洲影音av资源网| 欧美精品一区三区| 国产美女精品免费电影| 狠狠色丁香婷婷综合久久片| 亚洲精品国产精品乱码不99| 亚洲欧美激情在线视频| 久热精品视频在线观看一区| 欧美精品网站| 国产亚洲综合精品| 日韩视频免费| 久久国产手机看片| 欧美日韩裸体免费视频| 国产一区二区电影在线观看| 亚洲国产三级网| 欧美一二区视频| 蜜臀av性久久久久蜜臀aⅴ| 国产精品免费观看在线| 尤物在线观看一区| 亚洲午夜三级在线| 久久久精品国产一区二区三区| 免费一区视频| 国产日韩欧美中文| 999亚洲国产精| 久久久久国产一区二区三区四区| 美女图片一区二区| 国产精品欧美一区喷水 | 蜜桃伊人久久| 国产日韩欧美不卡| 99成人精品| 免费观看成人网| 国产一区二区中文字幕免费看| 一区二区三区精品在线| 欧美成人高清| 国产亚洲一区精品| 亚洲男人影院| 欧美网站在线| 夜夜嗨av色综合久久久综合网 | 国产在线拍揄自揄视频不卡99| 亚洲成人影音| 欧美一二三区精品| 欧美视频在线观看免费| 在线日韩精品视频| 国产欧美一区二区三区沐欲| 99视频在线精品国自产拍免费观看 | 国产精品久久久久久户外露出| 亚洲国产精品成人va在线观看| 久久精品二区三区| 国产精品男女猛烈高潮激情| 亚洲精品国久久99热| 久久女同精品一区二区| 国产视频在线观看一区| 欧美亚洲在线视频| 国产综合欧美在线看| 欧美一区二区日韩| 国产欧美一区二区三区国产幕精品| 亚洲欧洲99久久| 国产精品美女在线| 亚洲香蕉成视频在线观看| 欧美午夜一区二区三区免费大片| 一区二区电影免费观看| 欧美性色综合| 亚洲欧美日韩精品一区二区 | 欧美一区二区三区的| 国产精品毛片在线看| 亚洲伊人一本大道中文字幕| 国产精品乱码久久久久久| 宅男在线国产精品| 国产精品尤物福利片在线观看| 欧美亚洲免费高清在线观看| 国内精品久久久久久| 久久噜噜噜精品国产亚洲综合| 亚洲第一精品在线| 欧美性理论片在线观看片免费|