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

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

?? diskmain.h

?? 這是運(yùn)行在windows ce 4.2 版本下的關(guān)于硬盤加載的驅(qū)動程序
?? H
?? 第 1 頁 / 共 2 頁
字號:
//
// 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.
//
#ifndef _DISKMAIN_H_
#define _DISKMAIN_H_

#include "atapi2.h"
#include "atapiio.h"

//
// Device Extension Device Flags
//

#define DFLAGS_DEVICE_PRESENT        (1 << 0)    // Indicates that some device is present.
#define DFLAGS_ATAPI_DEVICE          (1 << 1)    // Indicates whether Atapi commands can be used.
#define DFLAGS_TAPE_DEVICE           (1 << 2)    // Indicates whether this is a tape device.
#define DFLAGS_INT_DRQ               (1 << 3)    // Indicates whether device interrupts as DRQ is set after
                                                 // receiving Atapi Packet Command

#define DFLAGS_REMOVABLE_DRIVE       (1 << 4)    // Indicates that the drive has the 'removable' bit set in
                                                 // identify data (offset 128)
#define DFLAGS_MEDIA_STATUS_ENABLED  (1 << 5)    // Media status notification enabled

#define DFLAGS_DEVICE_ISDVD          (1 << 6)    // Indicates that the drive is DVD and we use 12 bit reads
#define DFLAGS_MEDIA_ISDVD           (1 << 7)    // Indicates that the media is DVD

#define DFLAGS_USE_DMA               (1 << 9)    // Indicates whether device can use DMA
#define DFLAGS_LBA                   (1 << 10)   // support LBA addressing
#define DFLAGS_MULTI_LUN_INITED      (1 << 11)   // Indicates that the init path for multi-lun has already been done.

#define DFLAGS_MSN_SUPPORT           (1 << 12)   // Device support media status notification
#define DFLAGS_AUTO_EJECT_ZIP        (1 << 13)   // bootup default enables auto eject
#define DFLAGS_WD_MODE               (1 << 14)   // Indicates that unit is WD-Mode(not SFF-Mode).

#define DFLAGS_USE_UDMA              (1 << 16)    // Indicates whether device can use UDMA
#define DFLAGS_IDENTIFY_VALID        (1 << 17)    // Indicates whether the Identify data is valid or not

#define DFLAGS_DEVICE_PWRDN          (1 << 24)  // Indicates that the device has been powered down

#define DFLAGS_DEVICE_BUSY           (1 << 25)    // Indicates whether Device is in use
#define DFLAGS_DEVICE_CDROM          (1 << 26)    // Indicates whether Device CD-ROM
#define DFLAGS_MEDIA_CHANGED         (1 << 27)    // Set If Media Changed
#define DFLAGS_DEVICE_READY          (1 << 28)    // If Removeable Device  is Ready
#define DFLAGS_DEVICE_ACTIVATED      (1 << 29)    // If Removeable Device Activated / Mounted
#define DFLAGS_DEVICE_INITIALIZED    (1 << 30)    // If FS is Loaded & Asking for Dev Info.


#ifdef FAKE_CRC_ERROR
#define DFLAGS_FAKING_CRC_ERROR      (1 << 31)    // faking crc error
#endif // FAKE_CRC_ERROR


#define     ATA_VERSION_MASK    (0xfffe)
#define     ATA1_COMPLIANCE     (1 << 1)
#define     ATA2_COMPLIANCE     (1 << 2)
#define     ATA3_COMPLIANCE     (1 << 3)
#define     ATA4_COMPLIANCE     (1 << 4)


//
// Wait type codes for WaitForDisc
//
#define WAIT_TYPE_BUSY      1
#define WAIT_TYPE_NOT_BUSY  2
#define WAIT_TYPE_READY     3
#define WAIT_TYPE_DRQ       4   // wait for data request
#define WAIT_TYPE_NOT_DRQ   5 
#define WAIT_TYPE_ERROR     6

class CDisk
{
public:
    DWORD m_dwDeviceFlags;
    DWORD dwPktSize ; //  ATAPI command packet size, currently 12 or 16 bytes
public:
    CDisk *m_pNextDisk;
    HKEY m_hDevKey;  // Points to the driver key
    HANDLE m_hDevice;
    CRITICAL_SECTION m_csDisk;
    DWORD m_dwOpenCount; // Open Count;
    DWORD m_dwStateFlag;
    TCHAR m_szActiveKey[MAX_PATH];
    TCHAR m_szDeviceKey[MAX_PATH];
public:
    volatile PBYTE m_pATAReg;          // MmMapped pointer to ATA register range (Is in IO Space for x86)
    volatile PBYTE m_pATARegAlt;       // MmMapped pinter to ATA Alt regsiters (Is in IO Space for x86)
    IDENTIFY_DATA m_Id;               // Data filled from ATA Identify command
    BOOL m_fAtapiDevice;
    BOOL m_fDMAActive;
 
public:
    DWORD m_dwDevice;
    DWORD m_dwDeviceId;
    DWORD m_dwPort;
    BOOL m_f16Bit; // 8 bit or 16 bit access to the port ...should only be set for now on PCMCIA
    PTSTR  m_szDiskName;
public:
    DISK_INFO m_DiskInfo;                             // Disk Geometry Info
    BOOL    m_fLBAMode;                          // TRUE => logical block addressing supported
    BYTE    m_bSectorsPerBlock;                // Number of Sector Per Block
    BYTE    m_bReadCommand;                 // Current Read Command 
    BYTE    m_bWriteCommand;                //Current Write Command;
    WORD    m_wNextByte;                     // Read but nod used byte (if not -1)
    BOOL    m_fInterruptSupported;
     
public:
    // These are required for removable media
    DWORD m_dwUnitReadyTime;                // Tick count from last unit ready check
    DWORD m_dwLastCheckTime;                

    // IO Operation 
    DWORD   m_dwBestPioCycleTime;
    DWORD   m_dwBestSwDmaCycleTime;
    DWORD   m_dwBestMwDmaCycleTime;
    DWORD   m_dwBestUDmaCycleTime;

    DWORD   m_dwTransferModeSupported;
    DWORD   m_dwBestPioMode;
    DWORD   m_dwBestSwDmaMode;
    DWORD   m_dwBestMwDmaMode;
    DWORD   m_dwBestUDmaMode;
    DWORD   m_dwTransferModeCurrent;
public: // ATAPI stuff
    INQUIRY_DATA m_InqData;
    
public:
    CDisk()    {}
    CDisk(HKEY hKey) :
        m_dwDeviceFlags(0),
        m_pNextDisk(NULL),
        m_pATAReg(NULL),
        m_pATARegAlt(NULL),
        m_dwDevice(0),
        m_hDevKey( hKey),
        m_dwDeviceId(0),
        m_dwPort(0),
        m_f16Bit(FALSE),
        m_fAtapiDevice(FALSE),
        m_fInterruptSupported(FALSE),
        m_szDiskName(NULL),
        m_fDMAActive(FALSE),
        m_dwOpenCount(0),
        m_dwUnitReadyTime(0),                
        m_dwBestPioCycleTime(0),
        m_dwBestSwDmaCycleTime(0),
        m_dwBestMwDmaCycleTime(0),
        m_dwBestUDmaCycleTime(0),
        m_dwTransferModeSupported(0),
        m_dwBestPioMode(0),
        m_dwBestSwDmaMode(0),
        m_dwBestMwDmaMode(0),
        m_dwBestUDmaMode(0),
        m_dwTransferModeCurrent(0),
        m_dwStateFlag(0),
        m_dwLastCheckTime(0)
    {
        InitializeCriticalSection( &m_csDisk);
        memset( &m_Id, 0, sizeof(IDENTIFY_DATA));
        memset( &m_DiskInfo, 0, sizeof(DISK_INFO));
        memset( &m_InqData, 0, sizeof(INQUIRY_DATA));
    }
    virtual ~CDisk() 
    {
        if (m_hDevKey) 
            RegCloseKey( m_hDevKey);
        DeleteCriticalSection( &m_csDisk);            
    }
    virtual BOOL Init(HKEY hActiveKey);
    void SetActiveKey(TCHAR *szActiveKey)
    {
        wcscpy( m_szActiveKey, szActiveKey);
    }
    void SetDeviceKey(TCHAR *szDeviceKey)
    {
        wcscpy( m_szDeviceKey, szDeviceKey);
    }
    BOOL PostInit(PPOST_INIT_BUF pPostInitBuf);
    BOOL PerformIoctl(PIOREQ pIOReq);
    BOOL ResetController(BOOL bSoftReset=FALSE);
    BOOL Identify();
    BYTE WaitOnBusy(BOOL fBase);
    void AnalyzeDeviceCapabilities ();
    BOOL SetTransferMode(BYTE bMode);
    void SetBestTransferMode();
public: // Actual DISK functions
    DWORD GetDiskInfo(PIOREQ pIOReq);       
    DWORD SetDiskInfo(PIOREQ pIOReq);       
    virtual DWORD GetDeviceInfo(PIOREQ pIOReq);
    DWORD GetDiskName( PIOREQ pIOReq);
    DWORD ReadWriteDisk( PIOREQ pIOReq, BOOL fRead = TRUE);
    DWORD ReadWriteDiskDMA(PIOREQ pIOReq, BOOL fRead = TRUE);
    DWORD GetStorageId(PIOREQ pIOReq);
    void  PowerUp() { m_dwDeviceFlags &= ~DFLAGS_DEVICE_PWRDN;}
    void  PowerDown() { m_dwDeviceFlags |= DFLAGS_DEVICE_PWRDN;}
public: // ATAPI
    DWORD AtapiIoctl(PIOREQ pIOReq);
    DWORD ReadCdRom(CDROM_READ *pReadInfo, PDWORD pBytesReturned);
    DWORD SetupCdRomRead(BOOL bRawMode, DWORD dwLBAAddr, DWORD dwTransferLength, PATAPI_COMMAND_PACKET pCmdPkt);
    virtual DWORD ReadCdRomDMA(DWORD dwLBAAddr, DWORD dwTransferLength, WORD wSectorSize, DWORD dwSgCount, SGX_BUF *pSgBuf);
    BOOL  AtapiSendCommand(PATAPI_COMMAND_PACKET pCmdPkt, WORD wCount = 0, BOOL fDMA = FALSE);
    BOOL  AtapiReceiveData(PSGX_BUF pSgBuf, DWORD dwSgCount,LPDWORD pdwBytesRead);
    BOOL  AtapiSendData(PSGX_BUF pSgBuf, DWORD dwSgCount,LPDWORD pdwBytesWritten);
    BOOL  AtapiIsUnitReady(PIOREQ pIOReq = NULL);
    BOOL  AtapiIsUnitReadyEx();
    BOOL  AtapiGetSenseInfo(CD_SENSE_DATA *pSenseData);
    BOOL  AtapiIssueInquiry(INQUIRY_DATA *pInqData);
    BOOL  AtapiGetToc(CDROM_TOC *pTOC);
    DWORD AtapiGetDiscInfo(PIOREQ pIOReq);
    DWORD AtapiReadQChannel(PIOREQ pIOReq);
    DWORD AtapiLoadMedia(BOOL bEject=FALSE);
    DWORD AtapiStartDisc();

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人国产免费视频| 成人免费一区二区三区在线观看| 成人app在线| 国产白丝网站精品污在线入口| 国产精品夜夜爽| 在线观看日韩电影| 日韩女优毛片在线| 国产欧美一区二区三区网站 | 国产高清久久久久| 成人av在线网站| 欧美日免费三级在线| 欧美刺激午夜性久久久久久久| 久久青草国产手机看片福利盒子| 国产日韩欧美精品综合| 一二三区精品福利视频| 乱中年女人伦av一区二区| 91女神在线视频| 久久久久久久久久看片| 亚洲国产日韩a在线播放性色| 国产麻豆视频一区二区| 欧美一区二区播放| 综合久久给合久久狠狠狠97色| 日本不卡中文字幕| 91久久精品一区二区三| 国产精品久久看| 国产在线看一区| 亚洲精品在线三区| 麻豆精品蜜桃视频网站| 欧美亚洲国产bt| 亚洲视频一二三| 91亚洲永久精品| 亚洲欧美在线高清| 成人av在线资源| 亚洲免费观看在线视频| 色综合久久久久网| 亚洲国产日韩精品| 欧美一区二区在线视频| 久久不见久久见免费视频1| 日韩亚洲欧美高清| 国产91高潮流白浆在线麻豆| 日本一区二区三区在线观看| 国产a视频精品免费观看| 最新中文字幕一区二区三区| 在线视频欧美精品| 久久精品国产精品青草| 国产午夜亚洲精品理论片色戒| 成人午夜精品在线| 一区二区三区四区五区视频在线观看| 91传媒视频在线播放| 精品一区二区免费看| 一区二区三区日韩欧美精品| 4438x成人网最大色成网站| 国产美女精品在线| 亚洲综合在线视频| 国产欧美日本一区二区三区| 欧美三级欧美一级| 色婷婷亚洲精品| 成人综合激情网| 精品在线亚洲视频| 热久久国产精品| 亚洲国产精品一区二区尤物区| 一区二区三区产品免费精品久久75| 欧美亚洲综合网| 狂野欧美性猛交blacked| 欧美中文字幕不卡| 奇米影视7777精品一区二区| 日韩欧美国产电影| 国产成人午夜视频| 欧美日韩不卡在线| 色婷婷综合久久久久中文 | 一本久久综合亚洲鲁鲁五月天| 国产一区二区三区高清播放| 午夜影院久久久| 亚洲午夜免费视频| 一区二区三区在线视频播放| 国产精品你懂的| 亚洲精品ww久久久久久p站| 精品视频全国免费看| 国产一区二区在线视频| 国产麻豆精品一区二区| 不卡的av在线| 在线看国产一区二区| 这里只有精品免费| www久久久久| 亚洲欧美日本韩国| 亚洲一区二区av在线| 精品一区二区三区蜜桃| 波波电影院一区二区三区| 欧美天堂一区二区三区| 日韩精品一区二区三区三区免费 | 亚洲激情六月丁香| 日韩不卡手机在线v区| 国产成人免费视频精品含羞草妖精| av不卡在线观看| 91精品国产一区二区| 26uuu精品一区二区| 亚洲成a人片在线不卡一二三区| 国产精品996| 日韩亚洲欧美一区| 亚洲综合色网站| 99国内精品久久| 国产日韩影视精品| 国产综合久久久久久久久久久久| 在线精品视频小说1| 中文字幕一区二区三区乱码在线 | **欧美大码日韩| 国产91在线观看丝袜| 久久亚洲一区二区三区明星换脸| 日韩国产欧美三级| 欧美一区二区三区人| 亚洲高清免费观看高清完整版在线观看| av网站一区二区三区| 国产精品国产三级国产普通话三级| 国产成人亚洲综合色影视| 精品国产精品网麻豆系列| 国产一区二区不卡在线 | 91香蕉视频mp4| 亚洲高清不卡在线观看| 日韩午夜在线观看视频| 精品中文av资源站在线观看| 中文在线免费一区三区高中清不卡| 懂色一区二区三区免费观看| 一区二区三区在线视频观看58| 一本久道久久综合中文字幕| 婷婷国产v国产偷v亚洲高清| 欧美一区二区三区免费| 不卡电影一区二区三区| 婷婷成人激情在线网| 国产精品美女久久久久高潮| 在线观看日韩国产| 成人动漫一区二区在线| 天天操天天色综合| 亚洲图片另类小说| 精品国产一区二区三区四区四| 91农村精品一区二区在线| 激情综合色综合久久| 五月综合激情婷婷六月色窝| 亚洲精品ww久久久久久p站| 久久久久久久久97黄色工厂| 欧美日韩aaaaaa| 欧美日韩成人高清| 欧美午夜精品久久久久久孕妇| 成人av资源在线观看| 国产精品911| 国产一区二区三区黄视频 | 亚洲天堂免费看| 欧美韩日一区二区三区| 欧美国产欧美亚州国产日韩mv天天看完整 | 久久久久久影视| 久久美女艺术照精彩视频福利播放 | 成人av在线资源网| 风间由美一区二区av101| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 欧美一区二区福利在线| 91精品在线观看入口| 欧美老女人第四色| 精品嫩草影院久久| 久久精品欧美日韩精品| 中文字幕第一区综合| 亚洲欧美视频在线观看视频| 一区二区三区高清在线| 免费在线欧美视频| 精品一区二区三区在线观看 | 99精品一区二区| 欧美日韩一区不卡| 国产亚洲女人久久久久毛片| 国产精品免费视频网站| 一级中文字幕一区二区| 琪琪久久久久日韩精品| 91在线porny国产在线看| 欧美一区二区美女| 一区二区在线观看av| 国内成人自拍视频| 欧美日韩国产天堂| 国产精品毛片高清在线完整版| 亚洲成人激情av| 91丝袜美女网| 国产精品伦一区二区三级视频| 日韩电影在线观看网站| 不卡电影一区二区三区| 久久久久国产一区二区三区四区| 午夜影院久久久| 日本高清不卡一区| 亚洲日本韩国一区| 色系网站成人免费| 自拍偷拍欧美激情| 欧美最猛性xxxxx直播| 尤物视频一区二区| 在线视频中文字幕一区二区| 亚洲精品国产第一综合99久久| 成人污视频在线观看| 欧美经典一区二区三区| 成人动漫一区二区在线| 中文字幕日本不卡| 欧美性受xxxx| 麻豆一区二区三区| 国产日韩欧美不卡在线| 不卡视频在线看| 午夜亚洲国产au精品一区二区| 欧美一区二区视频观看视频|