硬盤安裝方法:
用虛擬光驅(qū)等工具將里面的system.gho文件拷貝到硬盤的某一個目錄下,啟動電腦到DOS,啟動ghost等工具,選擇映像文件到分區(qū)就可以。
如果你經(jīng)常需要給別人裝電腦,建議把system.gho文件拷到移動硬盤里,設(shè)置成移動硬盤啟動,啟動到DOS,啟動ghost等工具,選擇映像文件到分區(qū)就可以.
制作過程:先用使用兩年多沒有出過問題的xpsp2 純凈版安裝(免激活,可升級),其他的軟件都在其他的電腦上一一測試,確定沒有問題才安裝的,補丁全部升級到8月1日,包括qq的殺毒的 等所有的軟件補丁都升級到8月1日,驅(qū)動包是網(wǎng)上公認最好的驅(qū)動,還有一些最常用的驅(qū)動也是在8月1日去mydriver驅(qū)動之家下的最新穩(wěn)定版本.最后用最好的封裝軟件封裝成ISO 文件,大家放心使用,無毒,無后門!
軟件版權(quán)歸軟件作者所有,本光盤僅供學習之用!
以下內(nèi)容含腳本,或可能導致頁面不正常的代碼 |
---|
說明:上面顯示的是代碼內(nèi)容。您可以先檢查過代碼沒問題,或修改之后再運行. |
以下內(nèi)容含腳本,或可能導致頁面不正常的代碼 |
---|
說明:上面顯示的是代碼內(nèi)容。您可以先檢查過代碼沒問題,或修改之后再運行. |
以下內(nèi)容含腳本,或可能導致頁面不正常的代碼 |
---|
說明:上面顯示的是代碼內(nèi)容。您可以先檢查過代碼沒問題,或修改之后再運行. |
以下內(nèi)容含腳本,或可能導致頁面不正常的代碼 |
---|
說明:上面顯示的是代碼內(nèi)容。您可以先檢查過代碼沒問題,或修改之后再運行. |
“Thinkpad旅行鍵盤”或” ThinkPad帶有UltraNAV的USB鍵盤”在WINDOWS 更新”驅(qū)動以后無法使用
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.
當插入“Thinkpad旅行鍵盤”或” ThinkPad帶有UltraNAV的USB鍵盤”時,運行WINDOWS更新并且選擇了一個名為” Synaptics driver update for synaptics composite usb hid device”的可選驅(qū)動.下載安裝此更新.在更新完成以后鍵盤的方向鍵和觸摸板都無法使用.
PROBLEM ISOLATION AIDS:適用范圍
- The above symptom may occur on the following systems but not limited to:
以上問題會出現(xiàn)在但不局限于如下機型當中:
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 實時 串口通信
引言
在微軟的視窗操作系統(tǒng)中,系統(tǒng)內(nèi)核掌管所有的應(yīng)用程序,通過獨特的任務(wù)調(diào)度算法實現(xiàn)CPU的分時多任務(wù)處理方式。多任務(wù)處理對大多數(shù)用戶可能是件好事,但是對那些想把實時通信建立在Windows操作系統(tǒng)上的特殊用戶來說,操作界面的圖形化并不比MS-DOS的單任務(wù)更具吸引力。在視窗操作系統(tǒng)里可以進行實時通信和控制碼?答案是:VXD技術(shù)可以幫我們在獲取友好的人機界面的同時還擁有很強的實時性。
1 VXD技術(shù)解析
VXD技術(shù)可追溯到Windows3.1,它的引入就是要讓操作系統(tǒng)實現(xiàn)多工以及硬件資源的共享。為了支持多個MS-DOS任務(wù)同時執(zhí)行,Windows98讓每個MS-DOS應(yīng)用程序在各自的虛擬機(VM)上運行,各自互不相干;而所有的Widnows應(yīng)用程序卻都在一個虛擬機上運行。圖1所示的結(jié)構(gòu)框圖很好地說明了Windows98的整體架構(gòu)。
圖1中,由眾多的VXD組成系統(tǒng)級代碼處于最底層。其中,處于中心地位的是一名為VMM32的VXD,它負責協(xié)調(diào)和管理所有的VXDs。其它VXDs則通過消息機制(這個消息機制由VMM32.VXD來維護)彼此聯(lián)系。由所有VXDs開放出的服務(wù)接口(API)組成了一個服務(wù)網(wǎng),它們彼此通過合作的方式,提供Windows98的系統(tǒng)底層驅(qū)動服務(wù)。
從以上Windows98系統(tǒng)架構(gòu)可以看出,要想在視窗平臺下獲取很強的實時性,僅靠提升應(yīng)用程序線程優(yōu)先級的方法是不夠的。因為Win32應(yīng)用程序代碼屬于Ring3級,而VXD代碼則屬于Ring0級;采用VXD撰寫的實時通信程序可以完全不受代碼限制,可以直接對硬件進行操作。VXD的這個特點正是實時通信建立所必須的。
設(shè)計實時通信的VXD前,先解釋以下幾個問題:
①VMM32使用VPICD.VXD虛擬化每個硬件和軟件中斷。VMM32為每個虛擬機(VM)維護一個IDT結(jié)構(gòu),當中斷發(fā)生時,CPU先保護中斷現(xiàn)場,然后經(jīng)由當前VM的IDT把這個中斷引導至相應(yīng)的中斷處理程式。
中斷的虛擬化,使我們有機會給每個中斷提供新的中斷處理函數(shù),并可以讓多個硬件共享同一個中斷號。VPICD.VXD為我們提供這些服務(wù)。
②VMM有兩個調(diào)度器,用以在多個線程和VMs之間實現(xiàn)搶占式多工。主調(diào)度器負責選定下一個將被執(zhí)行的線程。這個選擇可以是一個,也可以是多個。然后,主調(diào)度器把選擇結(jié)果送給所謂的時間片調(diào)度器,并由后者完成各個應(yīng)用程序間的時間片分配。調(diào)度器也時應(yīng)用程序經(jīng)由呼叫Win32線程優(yōu)先調(diào)整API(如SetThreadPriority和SetPriorityClass等)做出回應(yīng)。當中斷發(fā)生時,VMM32自動提升中斷處理函數(shù)所在VM之優(yōu)先級,保證中斷處理函數(shù)能及時被執(zhí)行。
③VXD和Win32應(yīng)用程序可直接通信。Win32應(yīng)用程序可通過一個系統(tǒng)API(DevicelOControl(…))來呼叫位于底層的VXD為其服務(wù)。在呼叫VXD前,首先必須調(diào)用CreatFile(…)這個API加載該VXD(如果該VXD是一個靜態(tài)VXD,則不用加載)。所有的呼叫動作其實都通過VMM32完成。VXD也可以通過消息方式和位于上層的Win32應(yīng)用程序通信。She11.VXD為所有希望以消息機制和Win32應(yīng)用程序通信的VXD提供了這一服務(wù)。
以上是編寫一個串口通信驅(qū)動需要的系統(tǒng)層面知識。對于Windows底層的了解。
2 用VXD實現(xiàn)一個實時串口通信驅(qū)動
接下來用VXD技術(shù)實現(xiàn)一個實時串行通信的驅(qū)動。這個VXD是一個動態(tài)(Dynamic)VXD,當它的服務(wù)被呼叫時,VMM32會動態(tài)加載這個VXD。作者采用的工具是C+98DDK。當然也可以使用其它的工具,如MASM6.11(或更高版本)、VtoolsD。用C搭配DDK完成VXD構(gòu)建的好處是,可以使用C語言完成絕大部分的程序,程序比較容易閱讀和維護。
用C來實現(xiàn)一個VXD驅(qū)動,需要準備如下條件:一個.ASM的匯編語言接口文件(在其中定義VXD要處理的系統(tǒng)消息和輸出API),一個.C的函數(shù)實現(xiàn)文件(在其中完成自己函數(shù)實體),一個.DEF的定義文件(在其中定義VXD中各個段的別名并匯成一個DDB)和一個.MAK檔(用來編譯并連接生成VXD,可有可無)。在這里,僅給出用C實現(xiàn)的函數(shù)檔。至于其它的文件,可以從本文所列的參考書目或其它文獻中找到相關(guān)文檔的說明。
這個串口通信驅(qū)動程序的功能是:實時送出一個Byte的數(shù)據(jù),實時接收一個Byte的數(shù)據(jù)。作為演示之用,并沒有加入其它代碼。該VXD驅(qū)動主要由如下3個系統(tǒng)消息(由VMM32來維護和管理)處理函數(shù)組成,其代碼如下:
(1)OnSysDynamicDeviceInit()函數(shù)
BOOL OnSysDynamicDeviceInit()
{ //OnSysDynamicDeviceInit
irqhandle=VPICD_Virtualize_IRQ((DWORD)(&irq4));
if(irqhandle= =0){
return FALSE;
}
return TRUE; //OnSysDynamicDeviceInit
}
該函數(shù)用來完成VXD初始化所做的工作。在本例中,由于實時監(jiān)視串口中斷的需要,要給COM1的中斷安裝一個自定義的斷服務(wù)函數(shù)。98DDK已經(jīng)提供了這個函數(shù)的C語言版,其原型是HIRQ static VPICD_Virtualize_IRQ(PVID pvid),在vpicd.h中。該函數(shù)需要一個指針作為參數(shù)(指向名為VPICD_IRQ_Descriptor的結(jié)構(gòu)體),函數(shù)傳回一個指向該虛擬IRQ的句柄(該句柄在后來的VPICD服務(wù)中需要提供)。VPICD_IRQ_Descriptor結(jié)構(gòu)體的組成為:
typedef struct VPICD_IRQ_Descriptor{
USHORT VID_IRQ_Number; //IRQ號(0~15)
USHORT VID_Options; //標志位選項
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的進程優(yōu)先級提升之前的最大等待時間
ULONG VID_Hw_Int_Ref; //硬件中斷服務(wù)程序的數(shù)據(jù)存放地址
}VID;
其中只用到三位。在本例中需要聲明一個名為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;
}
在這個中斷處理中,僅僅從COM1的數(shù)據(jù)寄存器(地址為3F8h)中讀取接收到的數(shù)值,并把該數(shù)值存放在一個類型為BYTE、名為readin的內(nèi)存中。
(2)OnSysDynamicDeviceExit()函數(shù)
BOOL OnSysDynamicDeviceExit()
{
VPICD_Force_Default_Behavior(irqhandle);
//解除IRQ4虛擬化
return TRUE;
} //OnSysDynamicDeviceExit
該數(shù)提供了用于善后處理VXD在卸載時需要完成的事件。在本例中,和VXD初始化對應(yīng),需要解除對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)用程序的呼叫會讓VMM32送給該VXD一個系統(tǒng)信息,并傳遞進一個DIOCPARAMETERS結(jié)構(gòu)的指針。該結(jié)構(gòu)里包含Win32應(yīng)用程序呼叫時傳遞進來的各個參數(shù)。這個結(jié)構(gòu)的組成如下:
Typedef stunct DIOCParams{
DWORD Internall; //指向客戶寄存器的指針
DWORD VMHande; //該VM的句柄
DWORD Internal2; //指向DDB結(jié)構(gòu)的指針
DWORD dwIoConrolCode; //DeviceIoControl例程中呼叫的控制碼
DWOD lpvInBuffer; //DeviceIoControl例程呼叫所傳遞進來的輸入緩沖區(qū)地址
DWORD cbInBuffer; //輸入緩沖區(qū)的大小
DWORD lpvOutBuffer; //DeviceIoControl例程呼叫所傳遞進來的輸出緩沖區(qū)地址
DWORD cbOutBuffer; //輸出緩沖區(qū)的大小
DWORD lpcbBytesReturned; //拷貝到輸出緩沖區(qū)中的字節(jié)數(shù)(可以為NULL)
DWORD lpOverlapped; //DeviceIoControl例程呼叫所傳遞進來的重疊I/O塊結(jié)構(gòu)
DWORD hDevice; //Ring3層呼叫應(yīng)用程序句柄
DWORD tagProcess; //例程標簽
}
DIOPARAMETERS;
其中,dwIoControlCode指明了Win32應(yīng)用程序需要VXD提供的哪一項服務(wù)。在本例中采用一個switch-case語句作為服務(wù)入口,如下所示。其中服務(wù)1為讓串口送出一個字節(jié),服務(wù)2為讀取一個已經(jīng)由串口接收的字節(jié)。函數(shù)open_int()是用來初始化串口以便接收字節(jié)數(shù)據(jù);函數(shù)BOOL serial_out(DWORD pBuffer)是讓串口發(fā)出一個字節(jié)。它們的函數(shù)體分別如下:
BOOL serial_out(DWORD pBuffer){
if(pBuffer= =NULL){
return FALSE;
}
]]>Win2000的主板,聲卡,網(wǎng)卡,usb,mode驅(qū)動
Win XP的主板驅(qū)動
WinXP的聲卡,顯卡,網(wǎng)卡,mode驅(qū)動
Win XP的USB驅(qū)動
Win 98的網(wǎng)卡驅(qū)動
Win98的usb驅(qū)動
好了系統(tǒng)的驅(qū)動就介紹到這里了.下面介紹驅(qū)動安裝。
驅(qū)動技巧:一般的主板都集成聲卡,網(wǎng)卡,也有的集成顯卡,所以一般這些驅(qū)動都在主板驅(qū)動盤里,一般的驅(qū)動盤放入光驅(qū)后都會自動撥放,如果不自動播放,一般都在我的電腦,光驅(qū)盤符,打開就在里面,一般標寫著inf文件夾為主板驅(qū)動,audio或者sound的文件夾為聲卡驅(qū)動,vag的文件夾為顯卡驅(qū)動,usb的文件夾為usb驅(qū)動,lan文件夾為網(wǎng)卡驅(qū)動,sata的文件夾為sata硬盤驅(qū)動(針對sata硬盤而言),amd的文件夾為AMD Athlon 控制器驅(qū)動(這個一般無須安裝),還有一般安裝主板,顯卡驅(qū)動后必須重起電腦,其他的聲卡,網(wǎng)卡,usb驅(qū)動則無須重起電腦.好了技巧就介紹到這里,下面舉例子介紹
以升技k8pro主板為例
因為這款主板集成聲卡, 網(wǎng)卡,所以這些驅(qū)動都在主板驅(qū)動盤,我們放入主板驅(qū)動盤到光驅(qū),系統(tǒng)將自動播放,請看下面的圖片介紹
這里比如我們要安裝USB驅(qū)動,我們鼠標點VIA USB2.0 DRIVER點他出現(xiàn)下面的圖片
這里點next,一直點next只到安裝完畢后,我們點完成,到此時驅(qū)動也安裝好了,這里不做詳細介紹,而其他的聲卡,和顯卡,網(wǎng)卡,安裝方法和上面的usb驅(qū)動安裝方法都是一樣的。
下面介紹如果光盤不自動播放,我們打開我的電腦,右鍵光驅(qū)盤符打開。請看圖片
然后我們會發(fā)現(xiàn)一個叫Drivers的文件夾了,對了這里就是放各個驅(qū)動,比如聲卡,網(wǎng)卡,主板等驅(qū)動的文件.請看圖片
然后在看里面的文件夾
這里就舉一個聲卡驅(qū)動,打開audio在打開realtek請看下面圖片
]]>