
]]>






















硬盤安裝方法:
用虛擬光驅(qū)等工具將里面的system.gho文件拷貝到硬盤的某一個(gè)目錄下,啟動(dòng)電腦到DOS,啟動(dòng)ghost等工具,選擇映像文件到分區(qū)就可以。
如果你經(jīng)常需要給別人裝電腦,建議把system.gho文件拷到移動(dòng)硬盤里,設(shè)置成移動(dòng)硬盤啟動(dòng),啟動(dòng)到DOS,啟動(dòng)ghost等工具,選擇映像文件到分區(qū)就可以.
制作過程:先用使用兩年多沒有出過問題的xpsp2 純凈版安裝(免激活,可升級(jí)),其他的軟件都在其他的電腦上一一測試,確定沒有問題才安裝的,補(bǔ)丁全部升級(jí)到8月1日,包括qq的殺毒的 等所有的軟件補(bǔ)丁都升級(jí)到8月1日,驅(qū)動(dòng)包是網(wǎng)上公認(rèn)最好的驅(qū)動(dòng),還有一些最常用的驅(qū)動(dòng)也是在8月1日去mydriver驅(qū)動(dòng)之家下的最新穩(wěn)定版本.最后用最好的封裝軟件封裝成ISO 文件,大家放心使用,無毒,無后門!
軟件版權(quán)歸軟件作者所有,本光盤僅供學(xué)習(xí)之用!
| 以下內(nèi)容含腳本,或可能導(dǎo)致頁面不正常的代碼 |
|---|
| 說明:上面顯示的是代碼內(nèi)容。您可以先檢查過代碼沒問題,或修改之后再運(yùn)行. |
| 以下內(nèi)容含腳本,或可能導(dǎo)致頁面不正常的代碼 |
|---|
| 說明:上面顯示的是代碼內(nèi)容。您可以先檢查過代碼沒問題,或修改之后再運(yùn)行. |
| 以下內(nèi)容含腳本,或可能導(dǎo)致頁面不正常的代碼 |
|---|
| 說明:上面顯示的是代碼內(nèi)容。您可以先檢查過代碼沒問題,或修改之后再運(yùn)行. |
| 以下內(nèi)容含腳本,或可能導(dǎo)致頁面不正常的代碼 |
|---|
| 說明:上面顯示的是代碼內(nèi)容。您可以先檢查過代碼沒問題,或修改之后再運(yùn)行. |
“Thinkpad旅行鍵盤”或” ThinkPad帶有UltraNAV的USB鍵盤”在WINDOWS 更新”驅(qū)動(dòng)以后無法使用
When the “ThinkPad travel keyboard” or “ThinkPad USB Keyboard with UltraNAV” is plugged-in, run Windows Update and select the optional driver update named “Synaptics driver update for synaptics composite usb hid device”. Download and install this update. After the update is complete, both the trackpoint and touchpad of the keyboard will not function.
當(dāng)插入“Thinkpad旅行鍵盤”或” ThinkPad帶有UltraNAV的USB鍵盤”時(shí),運(yùn)行WINDOWS更新并且選擇了一個(gè)名為” Synaptics driver update for synaptics composite usb hid device”的可選驅(qū)動(dòng).下載安裝此更新.在更新完成以后鍵盤的方向鍵和觸摸板都無法使用.
PROBLEM ISOLATION AIDS:適用范圍
- The above symptom may occur on the following systems but not limited to:
以上問題會(huì)出現(xiàn)在但不局限于如下機(jī)型當(dāng)中:
ThinkCentre: Type 8105, 8107, 8109, 8117, 8119, 8121, 8153, 8154, 8155, 8156, 8157, 8158, 8159, 8160, 8161, 8162,8163, 8164, 8165, 8166, 8167, 8168, 8169, 8170, 8287, 8288, 8289, 8296, 8297, 8298, 8326, 8327,8328, 8329, 8340, 8341, 8342, 8343, 8344, 8380, 8381, 8382, 8701, 8702, 8970, 8973, 8980, 8983,8992, 8995, 9276, 9277, 9286, 9287, 9378, 9387, 9628, 9635, 8705, 8706, 8972, 8975, 8982, 8985,8994, 9265, 9636, 9638, 9640, 9641, 8013, 8700, 8976, 8979, 8986, 8991, 9266, 9269, 9282, 9283,9374, 9383, 9384, 9631, 9646, 9647, 9694, 9695, 9120, 9127, 9129, 9134, 9136, 9139, 9141, 9143,9156, 9158, 9171, 9126, 9128, 9130, 9135, 9137, 9140, 9142, 9144, 9157, 9169, 6417, 6418, 6449,6453, 8104, 8106, 8108, 8118, 8120, 8099, 8110, 8111, 8112, 8113, 8114, 8115, 8116, 8211, 8212,8213, 8214, 8215, 9210, 9211, 8299, 8380, 8009, 8010, 8011, 8012, 8791, 8792, 8793, 8794, 8795,8796, 8797, 8798, 8799, 8800, 8801, 8802, 8803, 8804, 8805, 8806, 8807, 8808, 8810, 8811, 8812,8813, 8814, 8816, 9278, 9279, 9288, 9379, 9380, 9389, 9632, 9637, 9642, 9643, 9644, 9645, 8792,8794, 8796, 8798, 8800, 8802, 8804, 8806, 8808, 8811, 6062, 6065, 6071, 6076, 6089, 9182, 6019,6066, 6072, 6077, 6087, 9181, 6008, 6068, 6074, 6079, 6082, 9172, 6010, 6069, 6075, 6081, 6086,9174, 9011, 9014, 9071, 9089, 9162, 9303, 6064, 6067, 6073, 6078, 6088, 9196, 9012, 9018, 9087,9096, 9163, 9193, 9013, 9019, 9088, 9160, 9164, 9194
Lenovo 3000: Type 8252, 8253, 8254, 8255, 8256, 8453, 8454, 8455, 8456, 8457, 8257, 8258, 8259, 8458, 8459, 8460,7393, 7394, 7395, 7396, 7397, 7398, 7387, 7388, 7389, 7390, 7391, 7392, 9690, 9691, 9688, 9689,9686, 9687
APPLIES TO:適用于如下操作系統(tǒng)
Microsoft Windows Vista Service Pack 1
FIX:解決方案
The Windows Update “Synaptics driver update for synaptics composite usb hid device” is not suitable for the “ThinkPad travel keyboard” or “ThinkPad USB Keyboard with UltraNAV”.
Windows的“Synaptics driver update for synaptics composite usb hid device”更新并不適用“Thinkpad旅行鍵盤”或” ThinkPad帶有UltraNAV的USB鍵盤”.






關(guān)鍵詞:VXD 實(shí)時(shí) 串口通信
引言
在微軟的視窗操作系統(tǒng)中,系統(tǒng)內(nèi)核掌管所有的應(yīng)用程序,通過獨(dú)特的任務(wù)調(diào)度算法實(shí)現(xiàn)CPU的分時(shí)多任務(wù)處理方式。多任務(wù)處理對(duì)大多數(shù)用戶可能是件好事,但是對(duì)那些想把實(shí)時(shí)通信建立在Windows操作系統(tǒng)上的特殊用戶來說,操作界面的圖形化并不比MS-DOS的單任務(wù)更具吸引力。在視窗操作系統(tǒng)里可以進(jìn)行實(shí)時(shí)通信和控制碼?答案是:VXD技術(shù)可以幫我們?cè)讷@取友好的人機(jī)界面的同時(shí)還擁有很強(qiáng)的實(shí)時(shí)性。
1 VXD技術(shù)解析
VXD技術(shù)可追溯到Windows3.1,它的引入就是要讓操作系統(tǒng)實(shí)現(xiàn)多工以及硬件資源的共享。為了支持多個(gè)MS-DOS任務(wù)同時(shí)執(zhí)行,Windows98讓每個(gè)MS-DOS應(yīng)用程序在各自的虛擬機(jī)(VM)上運(yùn)行,各自互不相干;而所有的Widnows應(yīng)用程序卻都在一個(gè)虛擬機(jī)上運(yùn)行。圖1所示的結(jié)構(gòu)框圖很好地說明了Windows98的整體架構(gòu)。
圖1中,由眾多的VXD組成系統(tǒng)級(jí)代碼處于最底層。其中,處于中心地位的是一名為VMM32的VXD,它負(fù)責(zé)協(xié)調(diào)和管理所有的VXDs。其它VXDs則通過消息機(jī)制(這個(gè)消息機(jī)制由VMM32.VXD來維護(hù))彼此聯(lián)系。由所有VXDs開放出的服務(wù)接口(API)組成了一個(gè)服務(wù)網(wǎng),它們彼此通過合作的方式,提供Windows98的系統(tǒng)底層驅(qū)動(dòng)服務(wù)。
從以上Windows98系統(tǒng)架構(gòu)可以看出,要想在視窗平臺(tái)下獲取很強(qiáng)的實(shí)時(shí)性,僅靠提升應(yīng)用程序線程優(yōu)先級(jí)的方法是不夠的。因?yàn)閃in32應(yīng)用程序代碼屬于Ring3級(jí),而VXD代碼則屬于Ring0級(jí);采用VXD撰寫的實(shí)時(shí)通信程序可以完全不受代碼限制,可以直接對(duì)硬件進(jìn)行操作。VXD的這個(gè)特點(diǎn)正是實(shí)時(shí)通信建立所必須的。
設(shè)計(jì)實(shí)時(shí)通信的VXD前,先解釋以下幾個(gè)問題:
①VMM32使用VPICD.VXD虛擬化每個(gè)硬件和軟件中斷。VMM32為每個(gè)虛擬機(jī)(VM)維護(hù)一個(gè)IDT結(jié)構(gòu),當(dāng)中斷發(fā)生時(shí),CPU先保護(hù)中斷現(xiàn)場,然后經(jīng)由當(dāng)前VM的IDT把這個(gè)中斷引導(dǎo)至相應(yīng)的中斷處理程式。
中斷的虛擬化,使我們有機(jī)會(huì)給每個(gè)中斷提供新的中斷處理函數(shù),并可以讓多個(gè)硬件共享同一個(gè)中斷號(hào)。VPICD.VXD為我們提供這些服務(wù)。
②VMM有兩個(gè)調(diào)度器,用以在多個(gè)線程和VMs之間實(shí)現(xiàn)搶占式多工。主調(diào)度器負(fù)責(zé)選定下一個(gè)將被執(zhí)行的線程。這個(gè)選擇可以是一個(gè),也可以是多個(gè)。然后,主調(diào)度器把選擇結(jié)果送給所謂的時(shí)間片調(diào)度器,并由后者完成各個(gè)應(yīng)用程序間的時(shí)間片分配。調(diào)度器也時(shí)應(yīng)用程序經(jīng)由呼叫Win32線程優(yōu)先調(diào)整API(如SetThreadPriority和SetPriorityClass等)做出回應(yīng)。當(dāng)中斷發(fā)生時(shí),VMM32自動(dòng)提升中斷處理函數(shù)所在VM之優(yōu)先級(jí),保證中斷處理函數(shù)能及時(shí)被執(zhí)行。
③VXD和Win32應(yīng)用程序可直接通信。Win32應(yīng)用程序可通過一個(gè)系統(tǒng)API(DevicelOControl(…))來呼叫位于底層的VXD為其服務(wù)。在呼叫VXD前,首先必須調(diào)用CreatFile(…)這個(gè)API加載該VXD(如果該VXD是一個(gè)靜態(tài)VXD,則不用加載)。所有的呼叫動(dòng)作其實(shí)都通過VMM32完成。VXD也可以通過消息方式和位于上層的Win32應(yīng)用程序通信。She11.VXD為所有希望以消息機(jī)制和Win32應(yīng)用程序通信的VXD提供了這一服務(wù)。
以上是編寫一個(gè)串口通信驅(qū)動(dòng)需要的系統(tǒng)層面知識(shí)。對(duì)于Windows底層的了解。
2 用VXD實(shí)現(xiàn)一個(gè)實(shí)時(shí)串口通信驅(qū)動(dòng)
接下來用VXD技術(shù)實(shí)現(xiàn)一個(gè)實(shí)時(shí)串行通信的驅(qū)動(dòng)。這個(gè)VXD是一個(gè)動(dòng)態(tài)(Dynamic)VXD,當(dāng)它的服務(wù)被呼叫時(shí),VMM32會(huì)動(dòng)態(tài)加載這個(gè)VXD。作者采用的工具是C+98DDK。當(dāng)然也可以使用其它的工具,如MASM6.11(或更高版本)、VtoolsD。用C搭配DDK完成VXD構(gòu)建的好處是,可以使用C語言完成絕大部分的程序,程序比較容易閱讀和維護(hù)。
用C來實(shí)現(xiàn)一個(gè)VXD驅(qū)動(dòng),需要準(zhǔn)備如下條件:一個(gè).ASM的匯編語言接口文件(在其中定義VXD要處理的系統(tǒng)消息和輸出API),一個(gè).C的函數(shù)實(shí)現(xiàn)文件(在其中完成自己函數(shù)實(shí)體),一個(gè).DEF的定義文件(在其中定義VXD中各個(gè)段的別名并匯成一個(gè)DDB)和一個(gè).MAK檔(用來編譯并連接生成VXD,可有可無)。在這里,僅給出用C實(shí)現(xiàn)的函數(shù)檔。至于其它的文件,可以從本文所列的參考書目或其它文獻(xiàn)中找到相關(guān)文檔的說明。
這個(gè)串口通信驅(qū)動(dòng)程序的功能是:實(shí)時(shí)送出一個(gè)Byte的數(shù)據(jù),實(shí)時(shí)接收一個(gè)Byte的數(shù)據(jù)。作為演示之用,并沒有加入其它代碼。該VXD驅(qū)動(dòng)主要由如下3個(gè)系統(tǒng)消息(由VMM32來維護(hù)和管理)處理函數(shù)組成,其代碼如下:
(1)OnSysDynamicDeviceInit()函數(shù)
BOOL OnSysDynamicDeviceInit()
{ //OnSysDynamicDeviceInit
irqhandle=VPICD_Virtualize_IRQ((DWORD)(&irq4));
if(irqhandle= =0){
return FALSE;
}
return TRUE; //OnSysDynamicDeviceInit
}
該函數(shù)用來完成VXD初始化所做的工作。在本例中,由于實(shí)時(shí)監(jiān)視串口中斷的需要,要給COM1的中斷安裝一個(gè)自定義的斷服務(wù)函數(shù)。98DDK已經(jīng)提供了這個(gè)函數(shù)的C語言版,其原型是HIRQ static VPICD_Virtualize_IRQ(PVID pvid),在vpicd.h中。該函數(shù)需要一個(gè)指針作為參數(shù)(指向名為VPICD_IRQ_Descriptor的結(jié)構(gòu)體),函數(shù)傳回一個(gè)指向該虛擬IRQ的句柄(該句柄在后來的VPICD服務(wù)中需要提供)。VPICD_IRQ_Descriptor結(jié)構(gòu)體的組成為:
typedef struct VPICD_IRQ_Descriptor{
USHORT VID_IRQ_Number; //IRQ號(hào)(0~15)
USHORT VID_Options; //標(biāo)志位選項(xiàng)
ULONG VID_Hw_Int_Proc; //硬件中斷服務(wù)程序的地址
ULONG VID_Virt_Int_Proc; //虛擬中斷服務(wù)程序
ULONG VID_Mask_Change_Proc //Mask Change調(diào)用例程
ULONG VID_IRET_Proc; //IRET調(diào)用例程
ULONG VID_IRET_Time_Out; //在Vm的進(jìn)程優(yōu)先級(jí)提升之前的最大等待時(shí)間
ULONG VID_Hw_Int_Ref; //硬件中斷服務(wù)程序的數(shù)據(jù)存放地址
}VID;
其中只用到三位。在本例中需要聲明一個(gè)名為irq4的全局變量為VID結(jié)構(gòu),并付給如下初值:VID irq4={4,0,hwproc,0,0,0,0,500,0},表示將要虛擬化IRQ4,改變其中斷處理函數(shù)為void hwproc(void),該函數(shù)的原型如下:
void hwproc(void){
_asm{
mov dx,0x3f8
in al,dx
mov byte ptr [readin],al
clc
}
return;
}
在這個(gè)中斷處理中,僅僅從COM1的數(shù)據(jù)寄存器(地址為3F8h)中讀取接收到的數(shù)值,并把該數(shù)值存放在一個(gè)類型為BYTE、名為readin的內(nèi)存中。
(2)OnSysDynamicDeviceExit()函數(shù)
BOOL OnSysDynamicDeviceExit()
{
VPICD_Force_Default_Behavior(irqhandle);
//解除IRQ4虛擬化
return TRUE;
} //OnSysDynamicDeviceExit
該數(shù)提供了用于善后處理VXD在卸載時(shí)需要完成的事件。在本例中,和VXD初始化對(duì)應(yīng),需要解除對(duì)COM1的中斷IRQ4的虛擬化。作者也是用98DDK在vpicd.h中提供的外包函數(shù)void static_inline VPICD_Force_Default_Behavior(HIRQ hirp)。該函數(shù)唯一需要的參數(shù)便是使用VPICD_Virtualize_IRQ函數(shù)傳回的IRQ句柄。
(3)OnDeviceIoControl()函數(shù)
DWORD OnDeviceIoControl(PDIOCPARAMETERS p){
Switch (p->dwIoControlCode)
{
case 1: //端口寫功能
if(!p->lpvOutBuffer||p->cbOutBuffer<1)
{ //輸出緩存的有效性檢查
return ERROR_INVALID_PARAMETER;
}
if(serial_out((DWORD)(p->lpvInBuffer)))
{ //數(shù)據(jù)發(fā)送
*(BYTE*)(p->lpvOutBuffer)=*(BYTE*)(p->lpvInBuffer);
}
else{
*(BYTE*)(p->lpvOutBuffer)=0;
}
open_int(); //打開com1中斷
return 0;
case 2: //端口讀功能
if(*(BYTE*)reading= =0x00)
{ //數(shù)據(jù)讀入
*(BYTE*)(p->lpvOutBuffer)=0x00;
return 0;
}
*(BTYE*)(p->lpvOutBuffer)=*(BYTE*)(readin);
return 0;
}
return 0;
}
return 0;
}
OnDeviceIoControl函數(shù)用來處理Win32應(yīng)用程序?qū)XD的呼叫。Win32應(yīng)用程序的呼叫會(huì)讓VMM32送給該VXD一個(gè)系統(tǒng)信息,并傳遞進(jìn)一個(gè)DIOCPARAMETERS結(jié)構(gòu)的指針。該結(jié)構(gòu)里包含Win32應(yīng)用程序呼叫時(shí)傳遞進(jìn)來的各個(gè)參數(shù)。這個(gè)結(jié)構(gòu)的組成如下:
Typedef stunct DIOCParams{
DWORD Internall; //指向客戶寄存器的指針
DWORD VMHande; //該VM的句柄
DWORD Internal2; //指向DDB結(jié)構(gòu)的指針
DWORD dwIoConrolCode; //DeviceIoControl例程中呼叫的控制碼
DWOD lpvInBuffer; //DeviceIoControl例程呼叫所傳遞進(jìn)來的輸入緩沖區(qū)地址
DWORD cbInBuffer; //輸入緩沖區(qū)的大小
DWORD lpvOutBuffer; //DeviceIoControl例程呼叫所傳遞進(jìn)來的輸出緩沖區(qū)地址
DWORD cbOutBuffer; //輸出緩沖區(qū)的大小
DWORD lpcbBytesReturned; //拷貝到輸出緩沖區(qū)中的字節(jié)數(shù)(可以為NULL)
DWORD lpOverlapped; //DeviceIoControl例程呼叫所傳遞進(jìn)來的重疊I/O塊結(jié)構(gòu)
DWORD hDevice; //Ring3層呼叫應(yīng)用程序句柄
DWORD tagProcess; //例程標(biāo)簽
}
DIOPARAMETERS;
其中,dwIoControlCode指明了Win32應(yīng)用程序需要VXD提供的哪一項(xiàng)服務(wù)。在本例中采用一個(gè)switch-case語句作為服務(wù)入口,如下所示。其中服務(wù)1為讓串口送出一個(gè)字節(jié),服務(wù)2為讀取一個(gè)已經(jīng)由串口接收的字節(jié)。函數(shù)open_int()是用來初始化串口以便接收字節(jié)數(shù)據(jù);函數(shù)BOOL serial_out(DWORD pBuffer)是讓串口發(fā)出一個(gè)字節(jié)。它們的函數(shù)體分別如下:
BOOL serial_out(DWORD pBuffer){
if(pBuffer= =NULL){
return FALSE;
}
]]>Win2000的主板,聲卡,網(wǎng)卡,usb,mode驅(qū)動(dòng)

Win XP的主板驅(qū)動(dòng)

WinXP的聲卡,顯卡,網(wǎng)卡,mode驅(qū)動(dòng)
Win XP的USB驅(qū)動(dòng)

Win 98的網(wǎng)卡驅(qū)動(dòng)

Win98的usb驅(qū)動(dòng)

好了系統(tǒng)的驅(qū)動(dòng)就介紹到這里了.下面介紹驅(qū)動(dòng)安裝。
驅(qū)動(dòng)技巧:一般的主板都集成聲卡,網(wǎng)卡,也有的集成顯卡,所以一般這些驅(qū)動(dòng)都在主板驅(qū)動(dòng)盤里,一般的驅(qū)動(dòng)盤放入光驅(qū)后都會(huì)自動(dòng)撥放,如果不自動(dòng)播放,一般都在我的電腦,光驅(qū)盤符,打開就在里面,一般標(biāo)寫著inf文件夾為主板驅(qū)動(dòng),audio或者sound的文件夾為聲卡驅(qū)動(dòng),vag的文件夾為顯卡驅(qū)動(dòng),usb的文件夾為usb驅(qū)動(dòng),lan文件夾為網(wǎng)卡驅(qū)動(dòng),sata的文件夾為sata硬盤驅(qū)動(dòng)(針對(duì)sata硬盤而言),amd的文件夾為AMD Athlon 控制器驅(qū)動(dòng)(這個(gè)一般無須安裝),還有一般安裝主板,顯卡驅(qū)動(dòng)后必須重起電腦,其他的聲卡,網(wǎng)卡,usb驅(qū)動(dòng)則無須重起電腦.好了技巧就介紹到這里,下面舉例子介紹
以升技k8pro主板為例
因?yàn)檫@款主板集成聲卡, 網(wǎng)卡,所以這些驅(qū)動(dòng)都在主板驅(qū)動(dòng)盤,我們放入主板驅(qū)動(dòng)盤到光驅(qū),系統(tǒng)將自動(dòng)播放,請(qǐng)看下面的圖片介紹

這里比如我們要安裝USB驅(qū)動(dòng),我們鼠標(biāo)點(diǎn)VIA USB2.0 DRIVER點(diǎn)他出現(xiàn)下面的圖片

這里點(diǎn)next,一直點(diǎn)next只到安裝完畢后,我們點(diǎn)完成,到此時(shí)驅(qū)動(dòng)也安裝好了,這里不做詳細(xì)介紹,而其他的聲卡,和顯卡,網(wǎng)卡,安裝方法和上面的usb驅(qū)動(dòng)安裝方法都是一樣的。
下面介紹如果光盤不自動(dòng)播放,我們打開我的電腦,右鍵光驅(qū)盤符打開。請(qǐng)看圖片

然后我們會(huì)發(fā)現(xiàn)一個(gè)叫Drivers的文件夾了,對(duì)了這里就是放各個(gè)驅(qū)動(dòng),比如聲卡,網(wǎng)卡,主板等驅(qū)動(dòng)的文件.請(qǐng)看圖片

然后在看里面的文件夾

這里就舉一個(gè)聲卡驅(qū)動(dòng),打開audio在打開realtek請(qǐng)看下面圖片
]]>