1. 程式人生 > >WinCE6.0 USB Host驅動載入流程詳解(一)

WinCE6.0 USB Host驅動載入流程詳解(一)

VOID GetUSBDVersion(LPDWORD lpdwMajorVersion, LPDWORD lpdwMinorVersion);
BOOL RegisterClientDriverID(LPCWSTR szUniqueDriverId);
BOOL UnRegisterClientDriverID(LPCWSTR szUniqueDriverId);
BOOL RegisterClientSettings(LPCWSTR lpszDriverLibFile,
                                                        LPCWSTR lpszUniqueDriverId, LPCWSTR szReserved,
                                                        LPCUSB_DRIVER_SETTINGS lpDriverSettings);
BOOL UnRegisterClientSettings(LPCWSTR lpszUniqueDriverId, LPCWSTR szReserved,
                                                            LPCUSB_DRIVER_SETTINGS lpDriverSettings);
HKEY OpenClientRegistryKey(LPCWSTR szUniqueDriverId);
BOOL GetClientRegistryPath(LPWSTR szRegistryPath, DWORD dwRegPathUnit, LPCWSTR szUniqueDriverId);     可以看出上面幾個函式都是通過def檔案顯式匯出的。除此之外,usbdi.h中還有一個函式指標列表結構體_USB_FUNCS,裡面包含了USBD的另外一部分介面,是在def中沒有匯出的,通過函式指標結構體在驅動之間進行傳遞的。_USB_FUNCS中的函式指標的實體都在檔案usbddrv.cpp的檔案中,整個USB驅動只有一個_USB_FUNCS的全域性變數gc_UsbFuncs,它的宣告及初始化在usbd.c中。
    USBD提供的主要介面函式歸類如下: USBD的傳輸函式 IssueControlTransfer      IssueBulkTransfer     IssueInterruptTransfer              IssueIsochTransfer IsTransferComplete              GetTransferStatus     GetIsochResults                AbortTransfer CloseTransfer USBD和USB裝置建立通訊管道的函式 OpenPipe                            AbortPipeTransfers        ResetPipe                            ClosePipe IsPipeHalted                 IsDefaultPipeHalted       ResetDefaultPipe USBD針對總線上資料打包的函式
GetFrameNumber          GetFrameLength           TakeFrameLengthControl SetFrameLength            ReleaseFrameLengthControl USBD和USB裝置進行互動的函式 OpenClientRegistryKey         RegisterNotificationRoutine         UnRegisterNotificationRoutine GetUSBDVersion                 LoadGenericInterfaceDriver         TranslateStringDescr FindInterface                       RegisterClientDriverID                UnRegisterClientDriverID GetDeviceInfo                     RegisterClientSettings                  UnRegisterClientSettings