亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? chw.hpp

?? Latest USB 802.3, HID printer and mass storage divers from Microsoft for Platform Builder 4.2.
?? HPP
字號:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
// 
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
// 
// Module Name:  
//     CHW.hpp
// 
// Abstract: Provides interface to UHCI host controller
// 
// Notes: 
//

#ifndef __CHW_HPP__
#define __CHW_HPP__

#include <globals.hpp>
#include <hcd.hpp>
class CUhcd;
class CHW;

typedef const DWORD C_DWORD;

struct HcRegisters {
    struct {
        DWORD REV:8;            // OHCI revision. Must be 0x10.
        DWORD :24;
    } const HcRevision;
    struct HcControl {          // All fields default to zero at reset.
        DWORD CBSR:2;           // Control/Bulk Service Ratio (CBSR+1):1
        DWORD PLE:1;            // Periodic List Enable
        DWORD IE:1;             // Isochronous Enable
        DWORD CLE:1;            // Control List Enable
        DWORD BLE:1;            // Bulk List Enable
        DWORD HCFS:2;           // Host Controller Functional State
        enum { HCFS_RESET=0, HCFS_RESUME=1, HCFS_OPERATIONAL=2, HCFS_SUSPEND=3 };
        DWORD IR:1;             // Interrupt Routing (unused)
        DWORD RWC:1;            // Remote Wakeup Connected (unusable - see spec)
        DWORD RWE:1;            // Remote Wakeup Enable (unused)
        DWORD :21;
    } HcControl;
    struct {                    // All fields default to zero at reset.
        DWORD HCR:1;            // Host Controller Reset (auto-clear)
        DWORD CLF:1;            // Control List Filled
        DWORD BLF:1;            // Bulk List Filled
        DWORD OCR:1;            // Ownership Change Request (unused)
        DWORD :12;
        DWORD SOC:2;            // Scheduling Overrun Count
        DWORD :14;
    } HcCommandStatus;
    union HcInterruptStatus {
        struct {                // Write 1 to clear each condition bit.
            DWORD SO:1;         // Scheduling Overrun
            DWORD WDH:1;        // Writeback DoneHead
            DWORD SF:1;         // Start of Frame
            DWORD RD:1;         // Resume Detected
            DWORD UE:1;         // Unrecoverable Error
            DWORD FNO:1;        // Frame Number Overflow
            DWORD RHSC:1;       // Root Hub Status Change
            DWORD :23;
            DWORD OC:1;         // Ownership Change (unused)
            DWORD :1;
        };
        DWORD reg;              // the entire register at once
    } HcInterruptStatus;
    struct OHCI_Ints {          // Write 1 to enable each interrupt.
        DWORD SO:1;             // Scheduling Overrun
        DWORD WDH:1;            // Writeback DoneHead
        DWORD SF:1;             // Start of Frame
        DWORD RD:1;             // Resume Detected
        DWORD UE:1;             // Unrecoverable Error
        DWORD FNO:1;            // Frame Number Overflow
        DWORD RHSC:1;           // Root Hub Status Change
        DWORD :23;
        DWORD OC:1;             // Ownership Change (unused)
        DWORD MIE:1;            // Master Interrupt Enable
    } HcInterruptEnable;
    struct OHCI_Ints            // Write 1 to diable each interrupt
      HcInterruptDisable;

    DWORD HcHCCA;               // PAddr of the HCCA. Must be 256-byte aligned.
    DWORD HcPeriodCurrentED;    // PAddr of current Isoch or Intr ED. 16-byte aligned.
    DWORD HcControlHeadED;      // PAddr of first Control ED. 16-byte aligned.
    DWORD HcControlCurrentED;   // PAddr of current Control ED. 16-byte aligned.
    DWORD HcBulkHeadED;         // Like Control but for Bulk.
    DWORD HcBulkCurrentED;      // Like Control but for Bulk.
    C_DWORD HcDoneHead;         // PAddr of last completed TD.
    
    struct HcFmInterval {
        DWORD FI:14;            // Frame Interval (nominally 11999 or 0x2EDF)
        DWORD :2;
        DWORD FSMPS:15;         // FS Largest Data Packet (see OHCI section 5.4)
        DWORD FIT:1;            // Frame Interval Toggle
    } HcFmInterval;
    C_DWORD HcFmRemaining;      // (unused)
    struct {
        C_DWORD FN:16;          // Frame Number (LSW)
        C_DWORD :16;
    } HcFmNumber;
    struct {
        DWORD PS:14;            // Periodic Start
        DWORD :18;
    } HcPeriodicStart;
    struct {
        C_DWORD LST:11;         // Low Speed Threshold (nominally 0x628)
        C_DWORD :21;
    } HcLSThreshold;

    struct {
        DWORD NDP:8;            // Number of Downstream Ports
        DWORD PSM:1;            // Power Switching Mode
        DWORD NPS:1;            // No Power Switching
        DWORD DT:1;             // Device Type (must be zero)
        DWORD OCPM:1;           // Over-Current Protection Mode
        DWORD NOCP:1;           // No Over-Current Protection
        DWORD :11;
        DWORD POTPGT:8;         // Power-On to Power-Good Time (2ms units)
    } HcRhDescriptorA;
    struct {
        DWORD DR:16;            // Device Removable (bitmask, b0 reserved)
        DWORD PPCM:16;          // Port Power Control Mask (ditto)
    } HcRhDescriptorB;
    union HcRhStatus { // We can not use bit field structure it is write to set or clear
        enum { LPS=0x1,OCI=0x2,DRWE=0x8000,LPSC=0x10000,OCIC=0x20000,CRWE=0x80000000};
        DWORD reg;
    } HcRhStatus;
    union HcRhPortStatus {
        // for writing, we generally set only one bit at a time.
        enum { CPE=0x00000001, SPE=0x00000002, SPS=0x00000004, CPS=0x00000008,
               SPR=0x00000010,
               SPP=0x00000100, CPP=0x00000200,
               CCSC=0x00010000, CPESC=0x00020000, CPSSC=0x00040000, COCIC=0x00080000,
               CPRSC=0x00100000
        };
        struct {
            DWORD CCS:1;        // Current Connect Status / Clear Port Enable
            DWORD PES:1;        // Port Enable Status / Set Port Enable
            DWORD PSS:1;        // Port Suspend Status / Set Port Suspend
            DWORD POCI:1;       // Port Over-Current Indicator / Clear Port Suspend
            DWORD PRS:1;        // Port Reset Status / Set Port Reset
            DWORD :3;
            DWORD PPS:1;        // Port Power Status / Set Port Power
            DWORD LSDA:1;       // Low Speed Device Attached / Clear Port Power
            DWORD :6;
            DWORD CSC:1;        // Connect Status Change / clear CSC
            DWORD PESC:1;       // Port Enable Status Change / clear PESC
            DWORD PSSC:1;       // Port Suspend Status Change / clear PSSC
            DWORD OCIC:1;       // Over-Current Indicator Change / clear OCIC
            DWORD PRSC:1;       // Port Reset Status Change / clear PRSC
            DWORD :11;
        };
        DWORD reg;
    } HcRhPortStatus[15];
};

struct HCCA {
    DWORD HccaInterruptTable[32];
    WORD  HccaFrameNumber;
    WORD  HccaPad1;             // unused
    DWORD HccaDoneHead;         // PAddr of first TD in Done Queue. 16-byte aligned. LSb special.
    // remainder is reserved so we can ignore it.
};


// this class is an encapsulation of UHCI hardware registers.
class CHW : public CHcd
{
public:
    // ****************************************************
    // public Functions
    // ****************************************************

    // 
    // Hardware Init/Deinit routines
    //
    CHW(IN const REGISTER portBase,
                              IN const DWORD dwSysIntr,
                              IN CPhysMem * const pCPhysMem,
                              IN LPVOID pvUhcdPddObject );
    ~CHW();
    virtual BOOL   Initialize(void);
    virtual void   DeInitialize( void );
    virtual void   SignalCheckForDoneTransfers ( DWORD  ) { ASSERT(FALSE); };

    void   EnterOperationalState(void);

    void   StopHostController(void);

    enum { LIST_CONTROL=1, LIST_BULK=2, LIST_INTERRUPT=4, LIST_ISOCH=8, LIST_ALL=15 };
    void   ListControl( IN const DWORD bfList,
                               IN const BOOL  bEnable,
                               IN const BOOL  bFill );

    //
    // Functions to Query frame values
    //
    BOOL GetFrameNumber( OUT LPDWORD lpdwFrameNumber );

    BOOL GetFrameLength( OUT LPUSHORT lpuFrameLength );
    
    BOOL SetFrameLength( IN HANDLE hEvent,
                         IN USHORT uFrameLength );
    
    BOOL StopAdjustingFrame( void );

    BOOL WaitOneFrame( void );

    //
    // Root Hub Queries
    //
    BOOL DidPortStatusChange( IN const UCHAR port );

    BOOL GetPortStatus( IN const UCHAR port,
                               OUT USB_HUB_AND_PORT_STATUS& rStatus );

    void GetRootHubDescriptor( OUT USB_HUB_DESCRIPTOR& descriptor );

    BOOL RootHubFeature( IN const UCHAR port,
                                IN const UCHAR setOrClearFeature,
                                IN const USHORT feature );

    BOOL ResetAndEnablePort( IN const UCHAR port );

    void DisablePort( IN const UCHAR port );

    // ****************************************************
    // public Variables
    // ****************************************************
    PDWORD m_pControlHead;
    PDWORD m_pBulkHead;
    PDWORD m_pInterruptTable;

private:
    // ****************************************************
    // private Functions
    // ****************************************************

    static DWORD CALLBACK CeResumeThreadStub( IN PVOID context );
    DWORD CeResumeThread( );
    
    static DWORD CALLBACK UsbInterruptThreadStub( IN PVOID context );
    DWORD UsbInterruptThread();

    static DWORD CALLBACK UsbAdjustFrameLengthThreadStub( IN PVOID context );
    DWORD CALLBACK UsbAdjustFrameLengthThread();

    void   UpdateFrameCounter( void );
    VOID    SuspendHostController();
    VOID    ResumeHostController();

#ifdef DEBUG
    // Query Host Controller for registers, and prints contents
    DWORD dwTickCountLastTime;
    static void DumpAllRegisters(void);
#endif
    WORD lastFn;
    // ****************************************************
    // Private Variables
    // ****************************************************

    volatile HcRegisters *m_portBase;
    volatile HCCA *m_pHCCA;

    // internal frame counter variables
    CRITICAL_SECTION m_csFrameCounter;
    WORD    m_wFrameHigh;

    // interrupt thread variables
    DWORD    m_dwSysIntr;
    HANDLE   m_hUsbInterruptEvent;
    HANDLE   m_hUsbInterruptThread;
    BOOL     m_fUsbInterruptThreadClosing;

    // frame length adjustment variables
    // note - use LONG because we need to use InterlockedTestExchange
    LONG     m_fFrameLengthIsBeingAdjusted;
    LONG     m_fStopAdjustingFrameLength;
    HANDLE   m_hAdjustDoneCallbackEvent;
    USHORT   m_uNewFrameLength;

    // initialization parameters for the IST to support CE resume
    // (resume from fully unpowered controller).
    CPhysMem *m_pMem;
    LPVOID    m_pPddContext;
    DWORD   m_dwCapability;
    BOOL    m_bDoResume;
public:
    DWORD   SetCapability(DWORD dwCap); 
    DWORD   GetCapability() { return m_dwCapability; };
private:
    
    BOOL g_fPowerUpFlag;
    BOOL g_fPowerResuming;

public:
    VOID PowerMgmtCallback( IN BOOL fOff );
    BOOL GetPowerUpFlag() { return g_fPowerUpFlag; };
    BOOL SetPowerUpFlag(BOOL bFlag) { return (g_fPowerUpFlag=bFlag); };
    BOOL GetPowerResumingFlag() { return g_fPowerResuming ; };
    BOOL SetPowerResumingFlag(BOOL bFlag) { return (g_fPowerResuming=bFlag) ; };
    
};
#endif // __CHW_HPP__

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91影院在线免费观看| 精品国产电影一区二区| 日韩三级在线免费观看| 亚洲日本va午夜在线影院| 日本麻豆一区二区三区视频| 91啪亚洲精品| 国产精品欧美久久久久一区二区 | 欧美一区二视频| 亚洲欧洲av在线| 国产成人在线网站| 欧美mv日韩mv国产网站| 日韩精品一区第一页| 91国偷自产一区二区使用方法| 国产精品无圣光一区二区| 久久99九九99精品| 欧美疯狂性受xxxxx喷水图片| 亚洲欧洲综合另类在线| jlzzjlzz欧美大全| 国产视频在线观看一区二区三区 | 911精品国产一区二区在线| 亚洲一区二区美女| 99re在线视频这里只有精品| 2022国产精品视频| 午夜精品久久久| 欧美日本一道本| 亚洲成人午夜电影| 制服丝袜在线91| 手机精品视频在线观看| 777午夜精品免费视频| 日韩1区2区日韩1区2区| 欧美一级欧美三级| 精品亚洲国产成人av制服丝袜 | 色噜噜偷拍精品综合在线| 日韩理论电影院| 91一区二区三区在线观看| 国产精品乱码久久久久久| 91在线观看污| 亚洲精品日产精品乱码不卡| 色美美综合视频| 亚洲v精品v日韩v欧美v专区| 51精品视频一区二区三区| 日本视频在线一区| 26uuuu精品一区二区| 九九久久精品视频| 久久久久久久久久久久电影 | 日本亚洲欧美天堂免费| 欧美一区二区私人影院日本| 精品写真视频在线观看| 久久精品人人爽人人爽| 成人av网站在线观看免费| 亚洲人成小说网站色在线 | 91麻豆精品久久久久蜜臀| 日本不卡高清视频| 亚洲精品在线观看视频| a在线欧美一区| 亚洲成av人**亚洲成av**| 日韩欧美综合在线| 国产在线一区二区综合免费视频| 国产亚洲一区二区三区| 不卡欧美aaaaa| 五月综合激情婷婷六月色窝| 精品少妇一区二区三区免费观看| 成人精品在线视频观看| 亚洲日本成人在线观看| 日韩三级在线观看| caoporen国产精品视频| 丝袜a∨在线一区二区三区不卡| 久久九九久精品国产免费直播| 99精品视频在线观看| 热久久国产精品| **欧美大码日韩| 日韩亚洲国产中文字幕欧美| 成人黄色国产精品网站大全在线免费观看 | 欧美亚洲一区三区| 国产一区不卡在线| 亚洲国产aⅴ天堂久久| 久久嫩草精品久久久精品| 欧美视频一区二区| 国产v综合v亚洲欧| 日本欧美一区二区| 一区二区三区中文字幕| 精品精品欲导航| 欧美在线观看视频在线| 国产成人精品免费网站| 日韩精品成人一区二区三区| 国产精品不卡在线| 欧美成人三级电影在线| 欧美私人免费视频| 不卡在线视频中文字幕| 精品一区二区三区蜜桃| 午夜电影网亚洲视频| 一区二区三区高清在线| 国产精品女主播av| 国产婷婷精品av在线| 日韩一区二区不卡| 色一情一乱一乱一91av| 成人免费黄色在线| 国产福利91精品一区二区三区| 日本 国产 欧美色综合| 一区二区三区免费网站| 中文字幕一区二区三| 久久久综合视频| 久久午夜免费电影| 日韩视频一区在线观看| 日韩欧美激情在线| 欧美一区二区高清| 欧美一区二区视频观看视频 | 天堂在线一区二区| 一区二区三区自拍| 伊人夜夜躁av伊人久久| 最近日韩中文字幕| 亚洲色图清纯唯美| 亚洲免费av高清| 亚洲一区日韩精品中文字幕| 一区二区欧美视频| 亚洲成人免费在线| 奇米影视一区二区三区小说| 免费成人深夜小野草| 蜜臀久久99精品久久久久宅男| 蜜臀久久99精品久久久画质超高清| 视频在线观看国产精品| 蜜桃免费网站一区二区三区| 麻豆视频一区二区| 国产成人av一区二区| 成人app网站| 色噜噜狠狠成人中文综合| 欧美视频完全免费看| 欧美性色黄大片| 日韩女优电影在线观看| 国产日产欧美一区二区视频| 国产精品动漫网站| 一区二区三区精品久久久| 日韩精品色哟哟| 国产一区欧美一区| 成人av网站在线| 欧美性猛片xxxx免费看久爱| 日韩欧美一级片| 欧美激情一区二区三区蜜桃视频| 国产精品进线69影院| 一个色综合网站| 精品一区二区三区免费毛片爱| 国产999精品久久久久久绿帽| 99久久久精品| 日韩情涩欧美日韩视频| 国产精品乱子久久久久| 亚洲大尺度视频在线观看| 久久99久久精品欧美| av亚洲产国偷v产偷v自拍| 欧美羞羞免费网站| 久久久国产精品午夜一区ai换脸| 亚洲综合一区二区| 国产一区二区三区四区在线观看| 色综合色狠狠天天综合色| 日韩欧美你懂的| 亚洲啪啪综合av一区二区三区| 久久精品噜噜噜成人av农村| 91小视频免费看| 欧美精品一区二区在线播放| 亚洲免费电影在线| 国产精品一品二品| 在线不卡中文字幕| 亚洲欧美自拍偷拍| 狠狠久久亚洲欧美| 欧美日韩aaaaaa| 亚洲人成人一区二区在线观看| 久久精品国产亚洲aⅴ| 色94色欧美sute亚洲线路二| 亚洲精品一线二线三线| 亚洲国产日韩精品| 91原创在线视频| 欧美国产日韩在线观看| 麻豆精品在线播放| 欧美中文字幕一区二区三区亚洲 | 9i在线看片成人免费| 在线不卡一区二区| 亚洲人成影院在线观看| 国产精品白丝jk黑袜喷水| 欧美一区二区在线观看| 亚洲国产三级在线| 色婷婷av一区二区三区gif| 久久精品人人做人人综合| 麻豆91精品视频| 欧美精品日韩精品| 亚洲一区在线观看视频| 91视视频在线直接观看在线看网页在线看 | 欧美日韩1区2区| 亚洲一区二区三区四区在线观看 | 国产视频一区在线播放| 久久激情五月婷婷| 制服丝袜亚洲色图| 亚洲成人黄色影院| 在线免费观看不卡av| 亚洲精品你懂的| www.色精品| 国产精品成人一区二区艾草| bt欧美亚洲午夜电影天堂| 国产精品美女www爽爽爽| 成人午夜激情片| 国产欧美日韩在线| 国产丶欧美丶日本不卡视频|