-
for[i=0 i<XtNumber[items] i++]{
label = XmCreateLabel[rowcolumn, items[i], NULL, 0]
XtManageChild[label]
textf = XmCreateTextField[rowcolumn, "textf", NULL, 0]
XtManageChild[textf]
}
標(biāo)簽:
items
XmCreateLabel
rowcolumn
XtNumber
上傳時(shí)間:
2017-03-25
上傳用戶:123啊
-
//初始化
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
上傳時(shí)間:
2013-12-20
上傳用戶:FreeSky
-
//初始化
if(initscr() == NULL) {
perror("initcurs")
exit(EXIT_FAILURE)
}
cbreak()
noecho()
keypad(stdscr, TRUE)
//建立菜單項(xiàng)
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
上傳時(shí)間:
2013-11-29
上傳用戶:小眼睛LSL
-
伙伴系統(tǒng):avail[0..m]為可利用空間表, n為申請(qǐng)分配量, 若有不小于n的空閑塊, 則分配相應(yīng)的存儲(chǔ)塊, 并返回其首地址,否則返回NULL
標(biāo)簽:
avail
NULL
分配
上傳時(shí)間:
2013-12-25
上傳用戶:helmos
-
GSM Call Flow MS Terminated Call Procedure Mobile - Originating Call Procedure INTRA_VLR LOCATION UPDATING OR IMSI ATTACH( in old VLR )
標(biāo)簽:
Procedure
Call
Originating
Terminated
上傳時(shí)間:
2017-07-28
上傳用戶:mpquest
-
How to configure serial port for Null-modem connection between two hosts.
標(biāo)簽:
Null-modem
connection
configure
between
上傳時(shí)間:
2013-12-24
上傳用戶:wangyi39
-
有兩種方式可以讓設(shè)備和應(yīng)用程序之間聯(lián)系:1. 通過(guò)為設(shè)備創(chuàng)建的一個(gè)符號(hào)鏈;2. 通過(guò)輸出到一個(gè)接口WDM驅(qū)動(dòng)程序建議使用輸出到一個(gè)接口而不推薦使用創(chuàng)建符號(hào)鏈的方法。這個(gè)接口保證PDO的安全,也保證安全地創(chuàng)建一個(gè)惟一的、獨(dú)立于語(yǔ)言的訪問(wèn)設(shè)備的方法。一個(gè)應(yīng)用程序使用Win32APIs來(lái)調(diào)用設(shè)備。在某個(gè)Win32 APIs和設(shè)備對(duì)象的分發(fā)函數(shù)之間存在一個(gè)映射關(guān)系。獲得對(duì)設(shè)備對(duì)象訪問(wèn)的第一步就是打開(kāi)一個(gè)設(shè)備對(duì)象的句柄。
用符號(hào)鏈打開(kāi)一個(gè)設(shè)備的句柄為了打開(kāi)一個(gè)設(shè)備,應(yīng)用程序需要使用CreateFile。如果該設(shè)備有一個(gè)符號(hào)鏈出口,應(yīng)用程序可以用下面這個(gè)例子的形式打開(kāi)句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3", GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路徑名的前綴“\\.\”告訴系統(tǒng)本調(diào)用希望打開(kāi)一個(gè)設(shè)備。這個(gè)設(shè)備必須有一個(gè)符號(hào)鏈,以便應(yīng)用程序能夠打開(kāi)它。有關(guān)細(xì)節(jié)查看有關(guān)Kdevice和CreateLink的內(nèi)容。在上述調(diào)用中第一個(gè)參數(shù)中前綴后的部分就是這個(gè)符號(hào)鏈的名字。注意:CreatFile中的第一個(gè)參數(shù)不是Windows 98/2000中驅(qū)動(dòng)程序(.sys文件)的路徑。是到設(shè)備對(duì)象的符號(hào)鏈。如果使用DriverWizard產(chǎn)生驅(qū)動(dòng)程序,它通常使用類KunitizedName來(lái)構(gòu)成設(shè)備的符號(hào)鏈。這意味著符號(hào)鏈名有一個(gè)附加的數(shù)字,通常是0。例如:如果鏈接名稱的主干是L“TestDevice”那么在CreateFile中的串就該是“\\\\.\\TestDevice0”。如果應(yīng)用程序需要被覆蓋的I/O,第六個(gè)參數(shù)(Flags)必須或上FILE_FLAG_OVERLAPPED。
使用一個(gè)輸出接口打開(kāi)句柄用這種方式打開(kāi)一個(gè)句柄會(huì)稍微麻煩一些。DriverWorks庫(kù)提供兩個(gè)助手類來(lái)使獲得對(duì)該接口的訪問(wèn)容易一些,這兩個(gè)類是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass類封裝了一個(gè)設(shè)備信息集,該信息集包含了特殊類中的所有設(shè)備接口信息。應(yīng)用程序能有用CdeviceInterfaceClass類的一個(gè)實(shí)例來(lái)獲得一個(gè)或更多的CdeviceInterface類的實(shí)例。CdeviceInterface類是一個(gè)單一設(shè)備接口的抽象。它的成員函數(shù)DevicePath()返回一個(gè)路徑名的指針,該指針可以在CreateFile中使用來(lái)打開(kāi)設(shè)備。下面用一個(gè)小例子來(lái)顯示這些類最基本的使用方法: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)用程序獲得一個(gè)有效的設(shè)備句柄,它就能使用Win32 APIs來(lái)產(chǎn)生到設(shè)備對(duì)象的IRPs。下面的表顯示了這種對(duì)應(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)建一個(gè)新的文件對(duì)象。這使得多個(gè)句柄可以映射同一個(gè)文件對(duì)象。當(dāng)這個(gè)文件對(duì)象的最后一個(gè)用戶級(jí)句柄被撤銷后,I/O管理器調(diào)用CleanUp。當(dāng)沒(méi)有任何用戶級(jí)和核心級(jí)的對(duì)文件對(duì)象的訪問(wèn)的時(shí)候,I/O管理器調(diào)用Close。如果被打開(kāi)的設(shè)備不支持指定的功能,則調(diào)用相應(yīng)的Win32將引起錯(cuò)誤(無(wú)效功能)。以前為Windows95編寫的VxD的應(yīng)用程序代碼中可能會(huì)在打開(kāi)設(shè)備的時(shí)候使用FILE_FLAG_DELETE_ON_CLOSE屬性。在Windows NT/2000中,建議不要使用這個(gè)屬性,因?yàn)樗鼘?dǎo)致沒(méi)有特權(quán)的用戶企圖打開(kāi)這個(gè)設(shè)備,這是不可能成功的。I/O管理器將ReadFile和WriteFile的buff參數(shù)轉(zhuǎn)換成IRP域的方法依賴于設(shè)備對(duì)象的屬性。當(dāng)設(shè)備設(shè)置DO_DIRECT_IO標(biāo)志,I/O管理器將buff鎖住在存儲(chǔ)器中,并且創(chuàng)建了一個(gè)存儲(chǔ)在IRP中的MDL域。一個(gè)設(shè)備可以通過(guò)調(diào)用Kirp::Mdl來(lái)存取MDL。當(dāng)設(shè)備設(shè)置DO_BUFFERED_IO標(biāo)志,設(shè)備對(duì)象分別通過(guò)KIrp::BufferedReadDest或 KIrp::BufferedWriteSource為讀或?qū)懖僮鳙@得buff地址。當(dāng)設(shè)備不設(shè)置DO_BUFFERED_IO標(biāo)志也不設(shè)置DO_DIRECT_IO,內(nèi)核設(shè)置IRP 的UserBuffer域來(lái)對(duì)應(yīng)ReadFile或WriteFile中的buff參數(shù)。然而,存儲(chǔ)區(qū)并沒(méi)有被鎖住而且地址只對(duì)調(diào)用進(jìn)程有效。驅(qū)動(dòng)程序可以使用KIrp::UserBuffer來(lái)存取IRP域。對(duì)于DeviceIoControl調(diào)用,buffer參數(shù)的轉(zhuǎn)換依賴于特殊的I/O控制代碼,它不在設(shè)備對(duì)象的特性中。宏CTL_CODE(在winioctl.h中定義)用來(lái)構(gòu)造控制代碼。這個(gè)宏的其中一個(gè)參數(shù)指明緩沖方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表顯示了這些方法和與之對(duì)應(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)分配一個(gè)單一的緩沖來(lái)作為輸入與輸出。驅(qū)動(dòng)程序必須在向輸出緩沖放數(shù)據(jù)之前拷貝輸入數(shù)據(jù)。驅(qū)動(dòng)程序通過(guò)調(diào)用KIrp::IoctlBuffer獲得緩沖地址。在完成時(shí),I/O管理器從系統(tǒng)緩沖拷貝數(shù)據(jù)到提供給Ring 3級(jí)調(diào)用者使用的緩沖中。驅(qū)動(dòng)程序必須在結(jié)束前存儲(chǔ)拷貝到IRP的Information成員中的數(shù)據(jù)個(gè)數(shù)。如果控制代碼不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,則DeviceIoControl的參數(shù)呈現(xiàn)不同的含義。參數(shù)InputBuffer被拷貝到一個(gè)系統(tǒng)緩沖,這個(gè)緩沖驅(qū)動(dòng)程序可以通過(guò)調(diào)用KIrp::IoctlBuffer。參數(shù)OutputBuffer被映射到KMemory對(duì)象,驅(qū)動(dòng)程序?qū)@個(gè)對(duì)象的訪問(wèn)通過(guò)調(diào)用KIrp::Mdl來(lái)實(shí)現(xiàn)。對(duì)于METHOD_OUT_DIRECT,調(diào)用者必須有對(duì)緩沖的寫訪問(wèn)權(quán)限。注意,對(duì)METHOD_NEITHER,內(nèi)核只提供虛擬地址;它不會(huì)做映射來(lái)配置緩沖。虛擬地址只對(duì)調(diào)用進(jìn)程有效。這里是一個(gè)用METHOD_BUFFERED的例子:首先,使用宏CTL_CODE來(lái)定義一個(gè)IOCTL代碼:#define IOCTL_MYDEV_GET_FIRMWARE_REV \CTL_CODE (FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)現(xiàn)在使用一個(gè)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ū)動(dòng)程序中返回的字符串。sizeof(FirmwareRev),& FirmwareRevSize, NULL // not overlapped I/O );如果輸出緩沖足夠大,設(shè)備拷貝串到里面并將拷貝的資結(jié)束設(shè)置到FirmwareRevSize中。在驅(qū)動(dòng)程序中,代碼看起來(lái)如下所示: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ū)動(dòng)程序
應(yīng)用程序
接口
上傳時(shí)間:
2013-10-17
上傳用戶:gai928943
-
C++在幾乎所有的計(jì)算環(huán)境中都非常普及,而且可以用于幾乎所有的應(yīng)用程序。C++從C中繼承了過(guò)程化編程的高效性,并集成了面向?qū)ο缶幊痰墓δ堋++在其標(biāo)準(zhǔn)庫(kù)中提供了大量的功能。有許多商業(yè)C++庫(kù)支持?jǐn)?shù)量眾多的操作系統(tǒng)環(huán)境和專業(yè)應(yīng)用程序。但因?yàn)樗膬?nèi)容太多了,所以掌握C++并不十分容易。本書(shū)詳述了C++語(yǔ)言的各個(gè)方面,包括數(shù)據(jù)類型、程序控制、函數(shù)、指針、調(diào)試、類、重載、繼承、多態(tài)性、模板、異常和輸入輸出等內(nèi)容。每一章都以前述內(nèi)容為基礎(chǔ),每個(gè)關(guān)鍵點(diǎn)都用具體的示例進(jìn)行詳細(xì)的講解。本書(shū)基本不需要讀者具備任何C++知識(shí),書(shū)中包含了理解C++的所有必要知識(shí),讀者可以從頭開(kāi)始編寫自己的C++程序。本書(shū)也適合于具備另一種語(yǔ)言編程經(jīng)驗(yàn)但希望全面掌握C++語(yǔ)言的讀者。
I created all the files under Microsoft Windows so lines are terminated by CR/LF.
In addition to this "ReadMe" file you will find three zip archives in the primary archive, so you need to unzip each of these to get at the code.
為PDG格式,這有pdg閱讀器下載|pdg文件閱讀器下載
標(biāo)簽:
源代碼
上傳時(shí)間:
2013-11-18
上傳用戶:gaoqinwu
-
留言本 需要修改的地方都有注釋 你可以自行修改 主要有l(wèi)ogin.jsp和jdbc.java里面關(guān)系都數(shù)據(jù)庫(kù)連接部分 jdbc你修改編譯之后請(qǐng)放到WEB-INF\classes\wu目錄下面 數(shù)據(jù)庫(kù)采用的是mysql 建表語(yǔ)言是: CREATE TABLE liuyan_temp ( id int(6) NOT NULL auto_increment, url varchar(100) default # , ip varchar(20) default NULL, email varchar(50) default # , qq varchar(20) default NULL, sj varchar(30) default NULL, content text, xm varchar(20) default 沒(méi)有姓名 , KEY id (id) ) TYPE=MyISAM
標(biāo)簽:
jdbc
WEB-INFclasseswu
login
java
上傳時(shí)間:
2014-01-10
上傳用戶:songyue1991
-
ngrep strives to provide most of GNU grep s common features, applying them to the network layer. ngrep is a pcap-aware tool that will allow you to specify extended regular or hexadecimal expressions to match against data payloads of packets. It currently recognizes TCP, UDP and ICMP across Ethernet, PPP, SLIP, FDDI, Token Ring and null interfaces, and understands bpf filter logic in the same fashion as more common packet sniffing tools, such as tcpdump and snoop.
標(biāo)簽:
applying
features
network
strives
上傳時(shí)間:
2014-01-15
上傳用戶:bcjtao