① 如何構造一個簡單的USB過濾驅動程序
本文分三部分來介紹如何構造一個簡單的USB過濾驅動程序,包括「基本原理」、「程序的實現」、「使用INF安裝」。此文的目的在於希望讀者了解基本原理後,可以使用除DDK以外最流行也最方便的驅動開發工具DriverStudio來實現一個自己的過濾驅動,並正確地安裝。
一、基本原理
我們知道,WDM(和KDM)是分層的,在構造設備棧時,IO管理器可以使一個設備對象附加到另外一個初始驅動程序創建的設備對象上。與初始設備對象相關的驅動程序決定的IRP,也將被發送到附加的設備對象相關的驅動程序上。這個被附加的驅動程序便是過濾驅動程序。如右圖,過濾驅動可以在設備棧的任何層次中插入。IO管理器發出的IRP將會沿著右圖的順序從上往下傳遞並返回。因此,我們可以使用過濾驅動程序來檢查、修改、完成它接收到的IRP,或者構造自己的IRP。
上面這種文字是很枯燥的,好在「前人」已經寫過一些範例以供我們更好地理解這些概念。讀過Waltz Oney的《Programming Windows Driver Mode》一書的讀者大概都知道Waltz Oney提供的範例中有一個關於USB過濾器(第九章)的例子,而在此基礎上,《USB Design By Example》(http://www.usb-by-example.com)的作者John Hyde實現了一個USB鍵盤過濾驅動程序,即給此程序增加了一個「攔截(Intercept)」功能來處理USB鍵盤的Report以實現特定的功能:當驅動程序在IRP_MJ_INTERNAL_DEVICE_CONTROL設置的完成常式從USB設備攔截到一個Get_Report_Descriptor時,攔截程序將此Descriptor中的USAGE值從「Keyboard」改為「UserDefined」,再返回給系統。
我們可以從這個例子中獲得一些靈感,比如,在Win2k下,鍵盤是由OS獨占訪問的,我們可以通過這種方式使之可以讓用戶自由訪問;我們也可以攔截其他Report_Descriptor,將部分鍵重新定義,以滿足特殊的要求;如果你願意再做一個用戶態的程序,你還可以將你攔截到的鍵值傳遞給你的用戶態程序,以實現象聯想、實達等國內電腦大廠出品的那些鍵盤上的各種實用的功能。
二、程序的實現
Waltz Oney和John Hyde的例子已經寫得很詳細了,讀者可以不用修改一個位元組便順利地編譯生成一個過濾驅動程序。本文的目的在於使用DriverStudio組件Driverworks來實現同樣的功能。
相信讀者讀到這篇文章時,已經對DriverStudio有了很多的了解。DriverStudio作為一個以C++為基礎的「快速」驅動開發工具,它封裝了基本上所有的DDK的函數,其集成在VC++中的DriverWizard,可以很方便地引導你完成設備驅動程序開發的全過程,能根據你的硬體種類自動生成設備驅動程序源代碼,並提供了很多范常式序。當然,這些例子中便包含一個USB Filter驅動程序的框架。在不侵犯版權的前提下,充分利用現有共享的、免費的、授權的代碼是我們的一貫作法。我們下面便以此範例為基礎來作修改。
我們的目的是做一個HID小驅動程序hisb.sys的Lower Filter,它附加在「人機介面設備」 ,通過攔截USB的Get_Report_Descriptor來修改其返回值,當它發現該Descriptor的Usage 為「Keyboard」時,將其改為「UserDefined」,如此我們便可以完全控制這只鍵盤。具體做法是,攔截IRP_MJ_INTERNAL_DEVICE_CONTROL,並檢查其IOCTL代碼及URB,如果滿足IOCTRL功能代碼為IOCTL_INTERNAL_USB_SUBMIT_URB以及URB功能代碼為URB_FUNCTION_GET_DESCRIPTOR_FROM_INTERFACE的條件,即上層驅動發來Get_Report_Descriptor請求時,設置一個完成常式,在這個完成常式中,我們將判斷Usage的值,將Usage由「6(Keyboard)」時,將其改為「0(UserDefined)」。
打開C:\Program Files\NuMega\DriverStudio\DriverWorks\Examples\wdm\usbfilt目錄(具體目錄依你的DriverStudio所安裝的目錄不同而不同) ,再打開工程文件usbfilt.dsw,我們先看一下代碼。
程序由兩個類組成,一個是Driver類,一個是Device類。Driver類包括:
入口函數DriverEntry:
DECLARE_DRIVER_CLASS(UsbFilterDriver, NULL)
/////////////////////////////////////////////////////////////////////
// Driver Entry
//
NTSTATUS UsbFilterDriver::DriverEntry(PUNICODE_STRING RegistryPath)
{
T << "UsbFilterDriver::DriverEntry\n";
m_Unit = 0;
return STATUS_SUCCESS;
// The following macro simply allows compilation at Warning Level 4
// If you reference this parameter in the function simply remove the macro.
UNREFERENCED_PARAMETER(RegistryPath);
}
AddDevice函數
NTSTATUS UsbFilterDriver::AddDevice(PDEVICE_OBJECT Pdo)
{
T << "UsbFilterDriver::AddDevice\n";
UsbFilterDevice * pFilterDevice = new (
static_cast<PCWSTR>(NULL),
FILE_DEVICE_UNKNOWN,
static_cast<PCWSTR>(NULL),
0,
DO_DIRECT_IO
)
UsbFilterDevice(Pdo, m_Unit);
if (pFilterDevice)
{
NTSTATUS status = pFilterDevice->ConstructorStatus();
if ( !NT_SUCCESS(status) )
{
T << "Failed to construct UsbFilterDevice"
<< (ULONG) m_Unit
<< " status = "
<< status
<< "\n";
delete pFilterDevice;
}
else
{
m_Unit++;
}
return status;
}
else
{
T << "Failed to allocate UsbFilterDevice"
<< (ULONG) m_Unit
<< "\n";
return STATUS_INSUFFICIENT_RESOURCES;
}
}
這兩段代碼基本上和自動生成的代碼差不多。AddDevice的作用是構造一個過濾器的實例。
關鍵的代碼在Device類。在這個類里,我們把過濾器插入設備棧,並攔截IRP,用自己的完成常式來實現特定的功能。
Device構造函數
UsbFilterDevice::UsbFilterDevice(PDEVICE_OBJECT Pdo, ULONG Unit) :
KWdmFilterDevice(Pdo, NULL)
{
T << "UsbFilterDevice::UsbFilterDevice\n";
// Check constructor status
if ( ! NT_SUCCESS(m_ConstructorStatus) )
{
return;
}
// Remember our unit number
m_Unit = Unit;
// initialize the USB lower device
m_Usb.Initialize(this, Pdo);
NTSTATUS status = AttachFilter(&m_Usb); //Attach the filter
if(!NT_SUCCESS(status))
{
m_ConstructorStatus = status;
return;
}
SetFilterPowerPolicy();
SetFilterPnpPolicy();
}
在DDK中,我們用IoAttachDevice將設備對象插入設備棧中。DriverStudio封裝了這個函數。在DriverStudio中,其他驅動程序需要用Initialize來初始化設備對象和介面,對於過濾驅動,我們關鍵是需要Attachfilter將其附加在堆棧中。
對於大部分如IRP_MJ_SYSTEM_CONTROL等IRP,我們所做的只需用PassThrough(Irp)將其直接往設備棧下層傳遞,不需要做任何工作。這些代碼我們就不一一列舉了。下面的部分才是本文的關鍵。
我們知道,HIDUSB.SYS是使用內部IOCTRL發出URB給USB類驅動程序(USBD)讀取數據的,那麼,HIDUSB首先必須構造一個IRP_MJ_INTERNAL_DEVICE_CONTROL,它的IOCTL功能碼為IOCTL_INTERNAL_USB_SUBMIT_URB(發出URB的內部IOCTL)。另外,因為我們要檢查並修改的是USB鍵盤某個介面的報告描述,那麼這個URB應該是URB_FUNCTION_GET_DESCRIPTOR_FROM_INTERFACE,如下:
NTSTATUS UsbFilterDevice::InternalDeviceControl(KIrp I)
{
T << "UsbFilterDevice::InternalDeviceControl\n";
// Pass through IOCTLs that are not submitting an URB
//不是我們感興趣的IOCTL不要理它
if (I.IoctlCode() != IOCTL_INTERNAL_USB_SUBMIT_URB)
return DefaultPnp(I);
PURB p = I.Urb(CURRENT); // get URB pointer from IRP
//不是我們感興趣的URB,也不要理它,
if (p->UrbHeader.Function !=
URB_FUNCTION_GET_DESCRIPTOR_FROM_INTERFACE)
return DefaultPnp(I);
//符合要求的IRP才被設置完成常式
return PassThrough(I, LinkTo(DeviceControlComplete), this);
}
在設置好條件以後,再來實現完成常式。所有的檢查、修改等動作都是在完成常式裡面完成的。
NTSTATUS UsbFilterDevice::DeviceControlComplete(KIrp I)
{
PURB p = I.Urb(CURRENT);
if(p)
{
//攔截到設備返回的描述表,
char* DescriptorBuffer = (char*)p->UrbControlDescriptorRequest.TransferBuffer;
//指向第三個位元組,表示設備Usage屬性的值
DescriptorBuffer += 3;
//如果值為6則改成0,6表示hid鍵盤,0表示未知設備
//在設備管理器裡面,原來的hid兼容鍵盤就不復存在了,取而代之的則是hid兼容設備
if ((*DescriptorBuffer&0xff) == 6)
*DescriptorBuffer = 0;
}
return I.Status();
}
讀者可以對照DriverWorks中的例子,直接替換掉(或者修改)上面這兩個函數,再編譯一下,便可以得到一個完整的鍵盤過濾器驅動程序。
其實,只要弄清楚了我們需要做些什麼動作,在DriverStudio裡面只需要寫少量的關鍵代碼,便可實現我們的要求,其餘的大部分工作,或有範例可供參考,或有Driver Wizard自動生成。
從上面可以看出,我們只需要修改這兩個函數,攔截合適的IRP,便可以在完成常式裡面實現我們特定的要求。正如開頭所說,我們也可以攔截其他的IRP,攔截其他的URB,或者攔截特定鍵盤的按鍵鍵值,將之傳遞到用戶態,以方便實現聯想、實達等隨機配備的多功能鍵盤的功能。
三、使用INF安裝驅動
在完成了驅動以後,還必須把它安裝到系統裡面,驅動程序才會起作用。一般來說,我們都必須為我們的驅動程序提供一個inf文件,以便於用戶安裝或者維護。對於新手來說,過濾驅動程序的inf或許有些棘手。所以,針對本文所描述的驅動,我們提供一個Win98下的安裝範例usbkey.inf,範例中「;」後的文字是註解,以方便讀者理解。
; usbkey.INF
;
; Installs Lower Level Filter for a HID keyboard device
;
; (c) Copyright 2001 SINO Co., Ltd.
;
[Version]
;」CHICAGO」表示Win9x平台
Signature="$CHICAGO$"
;鍵盤所屬類名
Class=HID
ClassGUID={745a17a0-74d3-11d0-b6fe-00a0c90f57da}
;驅動程序提供者,此信息會顯示在設備屬性的「常規」頁
Provider=%USBDBE%
LayoutFile=layout.inf
;顯示在驅動程序文件詳細資料窗口
DriverVer=11/12/2001,4.10.2222.12
;[ControlFlags]
;ExcludeFromSelect = *
;驅動程序安裝目錄,inf會將我們的驅動程序安裝到如下目錄
;記得Destinationdir後面一定要帶一個「s」
[DestinationDirs]
DefaultDestDir = 10,system32\drivers
;要增加的注冊表項
[ClassInstall]
Addreg=HIDClassReg
[HIDClassReg]
HKR,,,,%HID.ClassName%
HKR,,Icon,,-20
;製造商
[Manufacturer]
%USBDBE%=USBDBE
[USBDBE]
;我們所要附加過濾驅動程序的設備ID。這個ID可以從IC的規范上得來,也可以
;用hidview.exe讀出,或者從注冊表HKLM\Enum\hid和usb項找出
%HID.DeviceDesc% = Keypad_Inst, USB\VID_05AF&PID_0805&MI_00
;要安裝的文件和需要修改的注冊表項
;Install usbkey driver
[Keypad_Inst]
CopyFiles=Keypad_Inst.CopyFiles
AddReg=Keypad_Inst.AddReg
[Keypad_Inst.CopyFiles]
hisb.sys
hidparse.sys
hidclass.sys
usbfilt.sys
[Keypad_Inst.AddReg]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,"hisb.sys"
[Keypad_Inst.HW]
AddReg=Keypad_Inst.AddReg.HW
;Lowerfilters表示是低層過濾驅動,如果是上層過濾驅動,則必須改為upperfilters
[Keypad_Inst.AddReg.HW]
HKR,,"LowerFilters",0x00010000,"usbfilt.sys"
;HID設備所需要安裝的文件和注冊表中需要修改的地方
;Install USBHIDDevice
[USBHIDDevice]
CopyFiles=USBHIDDevice.Copy
AddReg=USBHIDDevice.AddReg
[USBHIDDevice.Copy]
hidclass.sys
hisb.sys
hidparse.sys
[USBHIDDevice.AddReg]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,"hisb.sys"
;以下定義需要在上面某些地方使用時替換的字元串
[strings]
USBDBE = "SINO Co., Ltd."
HID.DeviceDesc = "SINO USB MultiKeyboard"
HID.HIDDeviceDesc = "Human Interface Devices"
HID.DefaultDevice = "HID Default Device"
HID.ClassName = "Human Input Devices (HID)"
HID.SvcDesc = "Microsoft HID Class Driver"
其實最簡單的寫inf的方式,是找一些類似設備的inf文件或範例來修改。在不侵權的前提下,充分利用現有資源是我們的一貫原則。
② 怎樣找到usb驅動程序
1。如何找到USB驅動?
在Palm Desktop的安裝目錄下,有一個叫做USB Driver或者USB_Driver或者Drivers的目錄,這個目錄下就是你的USB驅動。
快速安裝一次Palm Desktop,隨便輸入一個用戶名,郵件設置選擇No。然後同步一次,如果可以工作,那麼這個USB驅動就是你的Palm在當前操作系統下的驅動。在安裝其他版本的Palm Desktop之前,把這個目錄保存下來。
2。如何刪除USB驅動?
在你卸載Palm Desktop的時候,並不會刪除USB設備驅動。這可能會為你安裝新的設備或者新版本的Palm Desktop帶來麻煩。
手動刪除它的方法是:
1) 找到Windows文件夾下的inf文件夾。這是一個隱藏文件夾,如果看不到,在「工具」菜單中選擇「文件夾選項」,在「查看」標簽頁上選擇「查看所有文件和文件夾」即可。
右鍵點擊文件夾圖標,選擇「搜索」,在包含文字輸入框中輸入「palm」。搜索出來的oemxx.inf名字的文件就是可能的USB驅動信息文件。打開它,如果看到裡面寫的是Palm. Inc字樣,刪除這個文件。
如果用的是Visor,那應該搜索「visor」或者「handspring」關鍵字,在搜索到的文件也是以oem加數字命名的,文件頭應該有Handspring. Inc字樣。刪除它。
2) 在這個文件夾下面查找名字為PalmUSBD.inf和VisorUsb.inf的文件,如果有就刪掉。
3) 在Windows\system32\drivers文件夾下面,查找下列名字的文件,PalmUSBD.sys,Visorusb.sys,如果有就刪除。
3。如何手動安裝USB驅動-Clie/Palm
Clie或者Palm的同步超時時間較長,如果插入之後系統提示找不到PalmUSBD.sys,把你備份的USB driver目錄告訴安裝程序就可以。
如果只是屏幕的右下角出現插入即插即用設備的標志,但是設備被認做未知USB設備,或者正確的識別出了設備,但是有個黃色的驚嘆號表示該設備不工作。需要重新安裝或者升級驅動程序。在安裝的過程中,不要讓系統搜索驅動,選擇「顯示設備列表」,然後在設備類型中選擇「其他設備」,注意,不要選擇Palm handheld,然後選擇「從磁碟安裝」,然後指向備份的USB Driver目錄即可。
4。如何手動安裝Visor的USB驅動。
手動安裝Visor的驅動需要洗干凈手,修好指甲,屏住呼吸,輕輕握住滑鼠,然後按下Visor的同步鍵。
Visor的同步超時只有幾秒鍾,所以通常是滑鼠點擊插入設備圖標的右鍵彈出的菜單里已經沒了設備。
打開設備管理器。按下同步鍵,要眼疾手快右鍵點中刷新出來的新設備然後選Properties。下面可以慢慢的裝了,Visor的USB驅動很標准。指定目錄搜索或者象前面說的選擇Others設備類型都可以。
③ 關於USB驅動程序
首先,可以不需要驅動,XP的系統絕對可以支持這個設備!電腦可以識別你的專P4說明問題不在數屬據線上。
我想是你的BIOS或者系統裡面沒有打開對即插即用的支持,檢查一下該功能是否被禁用了。
或者換一個USB介面試下。
④ 如何重裝USB驅動程序
1、打開電腦上的驅動精靈軟體,並在軟體中點擊驅動程序選項。
⑤ USB過濾驅動開發
《USB Design By Example》(http://www.usb-by-example.com)的作者John Hyde實現了一個USB鍵盤過濾驅動程序,即給此程序增內加了一個「攔截(Intercept)」功能容來處理USB鍵盤的Report以實現特定的功能:當驅動程序在IRP_MJ_INTERNAL_DEVICE_CONTROL設置的完成常式從USB設備攔截到一個Get_Report_Descriptor時,攔截程序將此Descriptor中的USAGE值從「Keyboard」改為「UserDefined」,再返回給系統。
⑥ 如何重裝USB驅動程序
右擊我的電腦--設備---彈出的窗口中選
通用串列匯流排控制器,在這裡面找到要更新驅動的USB。雙擊彈出的窗口中
選驅動程序----更新驅動程序。OK把裝有驅動的光碟放進光碟機就行了。
⑦ 如何構造一個簡單的USB過濾驅動程序
一、基本原理抄 我們知道,WDM(和KDM)是分層的,在構造設備棧時,IO管理器可以使一個設備對象附加到另外一個初始驅動程序創建的設備對象上。與初始設備對象相關的驅動程序決定的IRP,也將被發送到附加的設備對象相關的驅動程序上。
⑧ 請教USB過濾驅動如何寫端點
我的電腦—來—右鍵屬性自——硬體——設備管理器——通用串列匯流排控制器 ——下面會顯示USB的一些相關程序。 驅動程序一般指的是設備驅動程序(Device Driver),是一種可以使計算機和設備通信的特殊程序。相當於硬體的介面,操作系統只有通過這個介面,才能控制硬體設備的工作,假如某設備的驅動程序未能正確安裝,便不能正常工作。
⑨ USB驅動程序文件
.前置USB線接錯。當主板上的USB線和機箱上的前置USB 介面對應相接時把正負接反就會發生這類故障,這也是相當危險的,因為正負接反很可能會使得USB設備燒毀。所以盡量採用機箱後置的USB介面,也少用延長線.也可能是斷口有問題,換個USB埠看下. 2.USB介面電壓不足。當把移動硬碟接在前置USB口上時就有可能發生系統無法識別出設備的故障。原因是移動硬碟功率比較大要求電壓相對比較嚴格,前置介面可能無法提供足夠的電壓,當然劣質的電源也可能會造成這個問題。解決方法是移動硬碟不要接在前置USB介面上,更換劣質低功率的電源或盡量使用外接電源的硬碟盒,假如有條件的話。3.主板和系統的兼容性問題。呵呵這類故障中最著名的就是NF2主板與USB的兼容性問題。假如你是在NF2的主板上碰到這個問題的話,則可以先安裝最新的nForce2專用USB2.0驅動和補丁、最新的主板補丁和操作系統補丁,還是不行的話嘗試著刷新一下主板的BIOS一般都能解決。4.系統或BIOS問題。當你在BIOS或操作系統中禁用了USB時就會發生USB設備無法在系統中識別。解決方法是開啟與USB設備相關的選項。就是開機按F2或DEL鍵,進入BIOS,把enable usb device選擇enable。5.拔插要小心,讀寫時千萬不可拔出,不然有可能燒毀晶元。XP中任務欄中多出USB設備的圖標,打開該圖標就會在列表中顯示U盤設備,選擇將該設備停用,然後你再拔出設備,這樣會比較安全。其實判斷軟體硬體問題很簡單,在別的機器或換個系統(98下要驅動哦)試試就可以了.有些小的問題不妨先用專門軟體格式化下.還有提醒大家WINDOWS下格式化時要選擇FAT,不要選FAT32。U盤提示無法識別的USB設備維修故障提示如圖: 此故障大部份是U盤介面電路部份引起的。1、首先換一根USB延長線或換個USB口,排除掉U盤之外的因素。2、搖動U盤的插頭,看是否有松動。3、拆開U盤外殼,把USB介面的四個腳補焊一遍。4、故障依舊。我們知道在數據線到主控之間有兩個起保護作用的電阻(如下圖),用萬用表測量其中的一個開路。5、從壞的主控板上拆下一個27歐的電阻換上,故障排除。總結:U盤的故障一般都較容易修,應急情況也可以直接短接此電阻。維修例二:一Reidio牌128M的U盤插入電腦USB孔時提示無法識別的設備。此U盤為ChipsBank方案。備註:圖中為導線焊上二極體臨時代用,維修時應將三腳IC折下來,將二極體直接焊在電路板上。有配件的人員應使用規格相同的穩壓IC換上。檢修過程:1、根據故障分析,可以排除是軟體的問題。2、拆開U盤,首先看晶振、快閃記憶體等有無虛焊3、用備用的12M晶振代換上,故障依舊4、用萬用表測USB介面的V+電壓有5V正常5、再測穩壓IC的輸入端5V也正常,測穩壓IC的輸出端只有1.3V,正常應該為3.3V左右6、由於晶元沒有發熱現像,判斷穩壓IC損壞。7、手頭剛好沒有這種穩壓IC,應急用一個二極體並在三腳IC的輸入端和輸出端之間,如圖。8、故障排除。無法識別的USB設備:Unknown USB Device. 很多人都遇到過的一個問題,所謂「無法識別」對於操作系統來說,或者是驅動程度有問題,或者是USB設備出現了問題,或者是計算機與USB設備連接出現了故障,解決問題的方法也是從這幾處著手。對於不同的設備會有不同的處理方法,了解USB設備正常工作需要的條件以及一些可能影響USB設備正常工作的因素,會有助於解決問題。下面是保證USB設備可以正常工作的一些條件:(1)USB設備本身沒有任何問題——可以通過在其它計算機上進行測試,保證能正常工作;(2)USB介面沒有任何問題——可以通過連接其它的USB設備在此介面上進行測試;(3)USB設備的驅動程序已經正確安裝,如果有詳細說明書的USB設備,一定要仔細查看相應的說明文件,按照說明安裝相應的驅動程序;Windows 2000以後的操作系統以識別大部分的USB設備,Windows 98以前的操作系統可以安裝USB設備自帶的驅動或者安裝通用的USB設備驅動程序。下面是可能影響USB設備正常工作的一些情形:(1)USB設備已經出現了故障(同樣的條件以前可以正常使用,現在出現了問題);(2)USB介面有問題,比如a.USB前置介面極性接反,這可能導致USB設備燒毀,所以一定要仔細看一下主板說明書,防止接錯;b.介面電壓不足,一些移動硬碟常會有這樣的問題,主機後面的USB介面往往會比前置USB介面更可靠一些;c.主板與操作系統兼容性有問題,安裝最新的主板驅動程序可以最大程度地避免此類問題;d.Bios中禁止了USB設備,可能通過更改BIOS中相應的設置來解決;e.操作系統問題,可以通過重裝操作系統來解決;(3)USB驅動程序有問題:如果懷疑驅動有問題時,應當保證安裝了該設備相應型號的最新驅動程序或確認操作系統不需要安裝特別的驅動,最新的驅動可以通過從網上設備生產商的主頁上去查找。當USB設備出現問題時,除了根據實際的錯誤提示信息尋找解決方案以外,還要仔細查看USB設備的具體品牌、型號、生產商,在搜索結果時包括這些信息,可以更容易地找到對應的解決方法。象有些插拔費勁需要經常處於連接狀態的USB設備暫時出現故障,操作系統不停地出現「無法識別的USB設備」這樣惱人的提示時,可以在設備管理器中暫時關閉通用串列匯流排控制器中相應的USB埠或者禁止相應的USB設備。關於無法識別的usb設備MP3不聯機的原因可能有多種,我自己接觸過很多種的MP3,大致歸納一下解決辦法:1。電腦設置MP3插入後,就會在右下角彈出電腦正在嘗試連接此USB設備的一些信息,有時就會彈出對話框讓用戶選擇,有些用戶還沒看清就點了否,或者因為電腦一些初始的設置問題,禁止了USB的一些功能。解決辦法:右鍵點「我的電腦」,選「屬性」--「硬體」--「驅動器簽名」,在此選擇「忽略」,點「確定」。然後重新插上MP3,還是不連的話,再右鍵點「我的電腦」--「屬性」--「硬體」--「設備管理器」,從中找到「通用串列匯流排控制器」,右鍵,然後「掃描檢測硬體改動」。2。驅動程序問題MP3光碟里往往會配「98驅動程序」、「升級工具」,在2000以上系統中,雖然理論上不需要安裝也能聯MP3,但往往安裝過驅動後,能讓聯機變的更順暢。所以試試安裝這些工具,如果沒有「98驅動」,就把「升級工具」安裝一下(有些MP3的驅動集成在升級工具中)。3。MP3本身的電壓問題由於現在MP3的趨勢是千方百計的降低成本,所以各公司不斷採用新方案,新主控,新FLASH晶元,並不是說這些新東西就偷工減料了,問題在於這些新東西往往需要長期的調試才能達到最佳,但市場狀況只能允許MP3工廠測試能在電腦的一個介面上聯機就投產,所以常出現不聯機、掉盤等現象。這種情況下就需要用戶多試幾次,換插不同USB介面,單獨再配一條質量好的USB線(一般越粗越好,銅的比鐵的好),然後保證MP3供電正常(用充電器把電充滿再試)。4。長期不使用後,出現的不聯機有些MP3長期不使用後,不能聯機,甚至不能充電。主要是由於MP3未關閉電源,長期不用導致放電過度,達不到啟動電壓引起的。解決辦法是,把MP3連接到電腦或充電器上後,反復的拔/插USB介面和打開/關閉電源開關(ON/OFF鍵,如果沒有就反復按PLAY鍵)。比如,插上USB介面後,關ON/OFF充2分鍾,再開ON/OFF充2分鍾,再拔下來重插,再充2分鍾。這樣做的目的是讓MP3先少量充進一些電,達到啟動電壓。5。如果這些方法仍然不能解決問題,基本能肯定MP3本身出現問題。此時,應該及時的進行返修或者退換,以免錯過保修期。強烈反對用戶自行拆機,MP3的種類比手機都多,而且往往需要原廠的程序重新升級,所以自行拆機大多導致不能享受免費服務。也不建議用戶自行對MP3升級。系統報錯「無法識別的USB設備」【故障現象】使用U盤時電腦意外斷電,重新開機後U盤無法正常使用,插上後系統就報錯「無法識別的USB設備」。使用其他原來都能正常使用的USB介面設備,都會提示同樣的錯誤信息。將USB設備插到電腦的其他USB介面上,都能正常工作。【分析故障】從現象上看,USB設備和主板的介面都沒有損壞,懷疑是意外斷電導致系統設置錯誤。【問題處理】從「控制面板」進入添加和刪除硬體的窗口,將所有USB設備都刪除,重新安裝需要使用的USB設備驅動程序。重新啟動電腦,U盤等USB設備插在原來的故障介面上能夠正常工作。無法識別的USB設備- 筆記本硬碟故障移動硬碟,插在前置USB介面,無法識別。這種情況,很大原因是供電問題。由於USB硬碟在工作的時候也需要消耗一定的電能,如果直接通過USB介面來取電,很有可能出現供電不足。因此,幾乎所有的移動硬碟都附帶了單獨的外接電源或者是通過鍵盤取電的PS2轉介面,這時只要事先連接好外接電源或者通過PS2轉接線與鍵盤連接好,確保給移動硬碟提供足夠的電能之後再試試,這時應該可以正常使用了吧。需要特別提醒大家注意的是,建議使用移動硬碟之前都確保有足夠的供電,否則很可能由於供電不足導致硬碟損壞。對於從來沒有使用過USB外接設備的朋友來說,即使正確安裝了驅動程序也有可能出現系統無法檢測USB硬碟的情況,這主要是由於主板默認的CMOS埠是關閉的,如果沒有將其設置為開啟狀態,那麼Windows自然無法檢測到移動硬碟了。為了解決這個問題,我們可以重新開機,進入CMOS設置窗口,並且在 「PNP/PCI CONFIGURATION」欄目中將「Assign IRQ For USB」一項設置為「Enable」,這樣系統就可以給USB埠分配可用的中斷地址了。還有可能是USB介面類型不符導致移動硬碟無法使用。比如計算機配置的USB介面是1.1標準的,而購買的移動硬碟是USB 2.0標準的介面,這就要求連接計算機和移動硬碟的連接線必須支持USB 2.0標准。因為高速移動設備插入低速集線器,該設備可能不被正常安裝,而有些朋友在使用移動硬碟的同時還使用優盤,為了方便就直接使用優盤附送的USB 1.1標准連接線,這樣就導致USB 2.0標準的移動硬碟無法正確識別。只要將連接線更換為USB 2.0標準的即可解決此故障