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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? diskmain.h

?? WinCE5.0BSP for Renesas SH7770
?? H
?? 第 1 頁 / 共 2 頁
字號:
//
//  Copyright(C) Renesas Technology Corp. 2005. All rights reserved.
//
// ATAPI(UDFS) driver for ITS-DS7
//
// FILE     : atamain.cpp
// CREATED  : 2005.02.10
// MODIFIED : 
// AUTHOR   : Renesas Technology Corp.
// HARDWARE : RENESAS ITS-DS7
// HISTORY  : 
//            2005.02.10
//            - Created release code.
//                (based on PUBLIC ATAPI driver for WCE5.0)

//
// 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.
//

/*++

Module Name:
    diskmain.h

Abstract:
    Base ATA/ATAPI device abstraction.

Revision History:

--*/

#ifndef _DISKMAIN_H_
#define _DISKMAIN_H_

#include <atapi2.h>
#include <atamain.h>
#include <atapiio.h>
#include <atapipm.h>

// These flags are used by CDisk m_dwDeviceFlags member

#define DFLAGS_DEVICE_PRESENT       (1 << 0)  // Device is present (Set in Identify; Tested in ADC)
#define DFLAGS_ATAPI_DEVICE         (1 << 1)  // Device is ATAPI (Set in Identify; Not tested--redundant, same as m_fAtapiDevice)
#define DFLAGS_INT_DRQ              (1 << 3)  // Device interrupts as DRQ is set after receiving ATAPI packet command
#define DFLAGS_REMOVABLE_DRIVE      (1 << 4)  // Removable media device bit set in Identify Data (General Configuration) (Set in Identify; Not tested)
#define DFLAGS_DEVICE_ISDVD         (1 << 6)  // Device is DVD (use different read command) (Set in ReadSettings, based on registry; Tested in SetupCdRomRead)
#define DFLAGS_MEDIA_ISDVD          (1 << 7)  // Media is DVD (Not set; Unset in DVDGetCopySystem; Tested in DVDGetRegion)
#define DFLAGS_USE_WRITE_CACHE      (1 << 8)  // Use write cache (Set in ReadSettings based on Identify Data and in ReadSettings based on registry; Unset in ReadSettings based on registry; Tested in FlushCache)
#define DFLAGS_DEVICE_PWRDN         (1 << 24) // Device has been powered down (Set in PowerDown; Unset in PowerUp; Tested in MainIoctl)
#define DFLAGS_DEVICE_CDROM         (1 << 26) // Device is CD-ROM (Set in Identify; Tested in StallExecution)
#define DFLAGS_DEVICE_INITIALIZED   (1 << 30) // File system is loaded and Storage Manager has requested device information (Set in CSHXDisk::ConfigPort and CSHXDisk::InitController; Tested in CSHXDisk::InitController)

// These flags are not set and not tested

#define DFLAGS_TAPE_DEVICE          (1 << 2)  // Device is tape (Not set; Not tested)
#define DFLAGS_MEDIA_STATUS_ENABLED (1 << 5)  // Device supports removable media status notification feature set? (Not set; Not tested)
#define DFLAGS_USE_DMA              (1 << 9)  // Device supports DMA (Not set; Not tested)
#define DFLAGS_LBA                  (1 << 10) // Device supports LBA (Not set; Not tested)
#define DFLAGS_MULTI_LUN_INITED     (1 << 11) // Multi-LUN support intialized (Not set; Not tested)
#define DFLAGS_MSN_SUPPORT          (1 << 12) // Device supports media status notifications (Not set; Not tested)
#define DFLAGS_AUTO_EJECT_ZIP       (1 << 13) // "Boot-up default enables auto eject" (Not set; Not tested)
#define DFLAGS_WD_MODE              (1 << 14) // Device is WD, not SFF (Not set; Not tested)
#define DFLAGS_USE_UDMA             (1 << 16) // Device supports UDMA (Not set; Not tested)
#define DFLAGS_IDENTIFY_VALID       (1 << 17) // Identify Data is valid (Not set; Not tested)
#define DFLAGS_DEVICE_BUSY          (1 << 25) // Device is busy (Not set; Not tested)
#define DFLAGS_MEDIA_CHANGED        (1 << 27) // Media has changed (Not set; Not tested)
#define DFLAGS_DEVICE_READY         (1 << 28) // Device supports removable media and is ready (Not set; Not tested)
#define DFLAGS_DEVICE_ACTIVATED     (1 << 29) // Device supports removable media and has volume(s) mounted (Not set; Not tested)
#ifdef FAKE_CRC_ERROR
#define DFLAGS_FAKING_CRC_ERROR     (1 << 31) // Fake CRC error (Not set; Not tested)
#endif // FAKE_CRC_ERROR

// These flags are not set and not tested

#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)

// WaitForDisc wait condition codes; for more information on WaitForDisc
// (bStatusType), see atapiio.cpp.
// For more information on ATA/ATAPI device conditions, see ATA/ATAPI-6 R3B
// 7.14 (Status register).

#define WAIT_TYPE_BUSY      1
#define WAIT_TYPE_NOT_BUSY  2
#define WAIT_TYPE_READY     3
#define WAIT_TYPE_DRQ       4
#define WAIT_TYPE_NOT_DRQ   5
#define WAIT_TYPE_ERROR     6

// Base ATA/ATAPI device abstraction
#define ATAPI_CTRL_OFFSET       0x0080
#define ATAPI_STAT_OFFSET       0x0084
#define ATAPI_IRRN_OFFSET       0x0088
#define ATAPI_PIOT_OFFSET       0x008c
#define ATAPI_MDMA_OFFSET       0x0090
#define ATAPI_UDMA_OFFSET       0x0094
#define ATAPI_DMAS_OFFSET       0x009c
#define ATAPI_DMAC_OFFSET       0x00a0
#define ATAPI_CTL2_OFFSET       0x00a4
#define ATAPI_SIST_OFFSET       0x00b0
#define ATAPI_BSWP_OFFSET       0x00bc

// forward declaration
class CPort;

class CDisk {

  public:

    // Number of bytes between each ATA register; this is to facilitate PMC
    // platforms (i.e., Intel PXA)

    DWORD m_dwStride;

    // ATA register offsets from start of device control I/O port

                                     // Name             | Ref  | Notes
                                     // -----------------|------|------
    DWORD m_dwDataDrvCtrlOffset;     // Data             | 7.8  | 8 or 16 bits; PIO out <=> read, PIO in <=> write
    DWORD m_dwFeatureErrorOffset;    // Error            | 7.11 | RO; ABRT bit, i.e., Command code/parameter is invalid
                                     // Features         | 7.12 | WO; Command parameter
    DWORD m_dwSectCntReasonOffset;   // Sector Count     | 7.13 | Command parameter
    DWORD m_dwSectNumOffset;         // Sector Number    | 7.14 | Command parameter
    DWORD m_dwByteCountLowOffset;    // Cylinder Low     | 7.6  | Command parameter
    DWORD m_dwByteCountHighOffset;   // Cylinder High    | 7.5  | Command parameter
    DWORD m_dwDrvHeadOffset;         // Device/Head      | 7.10 | DEV bit selects device; 0 <=> master/device 0, 1 <=> slave/device 1
    DWORD m_dwCommandStatusOffset;   // Status           | 7.15 | RO; Read clears pending interrupt; contains BSY, DRDY, and ERR bits
                                     // Command          | 7.4  | WO; Command code; execution begins immediately after write

    // ATA register offsets from start of alternate status I/O port

    DWORD m_dwAltStatusOffset;       // Alternate Status | 7.3  | RO; Same as Status; Read does not clear pending interrupt
                                     // Device Control   | 7.9  | WO; SRST and nIEN bits; Both devices respond to write
    DWORD m_dwAltDrvCtrl;            // Same as m_dwAltStatusOffset

    volatile PBYTE m_pATAReg;        // Base address of device control register set (MmMapped)
    volatile PBYTE m_pATARegAlt;     // Base address of alternate status register set (MmMapped)
    BOOL           m_f16Bit;         // Data register width; set to TRUE in CSHXDisk::Init, tested in Identify and ReadWritedisk

    CPort *m_pPort;                  // I/O resources; including registry settings
    BOOL   m_fInterruptSupported;    // Set based on registry
    BOOL   m_fDMAActive;             // Set based on registry
    DWORD  m_dwDMAAlign;             // Set based on registry
    PBYTE  m_rgbDoubleBuffer;        // PIO mode double buffer; set based on registry
    WORD   m_wNextByte;              // Store extra byte when reading/writing unaligned buffer

    CRITICAL_SECTION m_csDisk;       // CDisk critical section

    DWORD  m_dwOpenCount;            // DSK_Open count; number of system-wide references to this device
    CDisk *m_pNextDisk;              // Next CDisk in global (ATAPI.DLL) disk list
    TCHAR  m_szActiveKey[MAX_PATH];  // Name of DeviceX's active key
    TCHAR  m_szDeviceKey[MAX_PATH];  // Name of DeviceX's instance key
    HKEY   m_hDevKey;                // Handle to DeviceX subkey
    DWORD  m_dwDevice;               // Master <=> 0; Slave <=> 1
    DWORD  m_dwDeviceId;             // Master <=> 0; Slave <=> 1
    DWORD  m_dwPort;                 // Not used; if device is on primary channel, 0; If device is on secondary channel, 1

    IDENTIFY_DATA m_Id;              // IDENTIFY DEVICE data
    DWORD         m_dwDeviceFlags;   // Device attributes, see above
    BOOL          m_fLBAMode;        // Device supports LBA or C/H/S
    BOOL          m_fAtapiDevice;    // Device is ATA or ATAPI
    BYTE          m_bReadCommand;    // Read command to use (single-sector or multi-sector)
    BYTE          m_bWriteCommand;   // Write command to use (single-sector or multi-sector)

    DISK_INFO m_DiskInfo;            // DISK_INFO (disk geometry) Storage Manager structure
    PTSTR     m_szDiskName;

    DWORD m_dwWaitCheckIter;         // Timeout
    DWORD m_dwWaitSampleTimes;       // Timeout
    DWORD m_dwWaitStallTime;         // Timeout
    DWORD m_dwDiskIoTimeOut;         // Timeout
    DWORD m_dwUnitReadyTime;         // Time between TEST_UNIT_READY commands
    DWORD m_dwLastCheckTime;         // Not used; time of last TEST_UNIT_READY command

    CDiskPower *m_pDiskPower;

    HANDLE m_hDevice;                // Handle to this store

    DWORD dwPktSize;                 // Not used; command packet size (12 or 16 bytes)
    DWORD m_dwStateFlag;             // Not used
    INQUIRY_DATA m_InqData;          // Not used
    BYTE m_bSectorsPerBlock;         // This was used at some point in time, but is no longer used (Set in Identify)

	BYTE m_dwBestPioMode;
	BYTE m_dwBestDmaMode;
	BYTE m_dwBestUdmaMode;

	BYTE m_dwPioMode;
	BYTE m_dwDmaMode;
	BYTE m_dwUdmaMode;

	BYTE  m_bTransferMode;
	BYTE  m_bDefaultTransferMode;
public:

    // ------------------------------------------------------------------------
    // ------------------------------------------------------------------------

    CDisk();          // Not used
    CDisk(HKEY hKey); // Handle to device's DeviceX instance key
    virtual ~CDisk();

    // ------------------------------------------------------------------------
    // ------------------------------------------------------------------------

    // Read/write Data register
    void ReadBuffer(PBYTE pBuffer, DWORD dwCount);
    void WriteBuffer(PBYTE pBuffer, DWORD dwCount);

    inline void WriteDriveController(BYTE bData) {
        ATA_WRITE_BYTE(m_pATAReg + m_dwDataDrvCtrlOffset, bData);
    }
    inline WORD ReadByte() {
        return ATA_READ_BYTE(m_pATAReg+m_dwDataDrvCtrlOffset);
    }
    inline WORD ReadWord() {
        return ATA_READ_WORD((PWORD)(m_pATAReg+m_dwDataDrvCtrlOffset));
    }
    inline void ReadByteBuffer(PBYTE pBuffer, DWORD dwCount) {
        READ_PORT_BUFFER_UCHAR(m_pATAReg + m_dwDataDrvCtrlOffset, pBuffer, dwCount);
    }
    inline void ReadWordBuffer(PWORD pBuffer, DWORD dwCount) {
        READ_PORT_BUFFER_USHORT((PWORD)(m_pATAReg + m_dwDataDrvCtrlOffset), pBuffer, dwCount);
    }
    inline void WriteByte(BYTE bData) {
        ATA_WRITE_BYTE(m_pATAReg + m_dwDataDrvCtrlOffset, bData);
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费在线观看不卡| 中文字幕欧美日韩一区| 天堂va蜜桃一区二区三区漫画版| 91在线观看一区二区| 亚洲一区二区三区中文字幕在线| 欧美私模裸体表演在线观看| 婷婷久久综合九色综合伊人色| 欧美日韩国产综合久久| 美女网站一区二区| 2020日本不卡一区二区视频| 高清不卡在线观看| 一区二区三区视频在线观看| 欧美日韩国产高清一区二区三区 | 极品少妇xxxx精品少妇偷拍 | 久久精品综合网| 在线免费观看成人短视频| 亚洲va在线va天堂| 久久精品男人天堂av| 99国产一区二区三精品乱码| 午夜精品久久久久久久99水蜜桃| 26uuu国产电影一区二区| 91网站在线播放| 精品伊人久久久久7777人| 久久精品欧美日韩| 国产精品久久夜| 日韩三区在线观看| 欧美福利视频导航| 欧美亚洲一区二区在线观看| 国产成人综合自拍| 久久99久久精品| 亚洲大片精品永久免费| 有码一区二区三区| 亚洲色图视频免费播放| 国产日韩欧美不卡在线| 精品国产1区2区3区| 欧美大片一区二区| 在线观看一区不卡| 99精品偷自拍| 91视频在线看| 在线视频你懂得一区二区三区| www.亚洲精品| 99re这里只有精品首页| 成人永久aaa| 91视频免费看| 欧美色窝79yyyycom| 欧美人与z0zoxxxx视频| 7777精品伊人久久久大香线蕉| 色噜噜夜夜夜综合网| 在线观看免费视频综合| 欧美伊人久久久久久午夜久久久久| 91亚洲精品乱码久久久久久蜜桃 | 热久久久久久久| 免费人成黄页网站在线一区二区| 日韩av网站在线观看| 久久成人18免费观看| 蜜臀久久99精品久久久久久9| 美女看a上一区| 成人美女视频在线看| 色综合天天狠狠| 欧美色图第一页| 精品欧美乱码久久久久久1区2区| 国产午夜精品一区二区| 国产日产欧美一区| 亚洲一区二区三区在线播放| 日本亚洲电影天堂| 国产成人综合亚洲网站| 色老汉一区二区三区| 2017欧美狠狠色| 亚洲欧洲成人精品av97| 蜜臀av在线播放一区二区三区| 国产成人在线视频网站| 欧美日韩国产三级| 国产精品国产三级国产专播品爱网 | 久久精品国产免费| 日本电影欧美片| 久久久午夜精品理论片中文字幕| 亚洲国产日韩一区二区| 国产不卡免费视频| 精品国产乱码久久久久久久| 天天影视涩香欲综合网| 不卡区在线中文字幕| 精品播放一区二区| 视频一区视频二区中文| 欧美日韩精品欧美日韩精品一 | 欧美日韩在线播放三区四区| 国产综合色在线| 欧美猛男gaygay网站| 美腿丝袜亚洲色图| 国产精品色呦呦| 欧美性猛交xxxx乱大交退制版 | 亚洲另类春色国产| 国产suv精品一区二区三区| 欧美日韩在线播放三区| 一区二区三区四区国产精品| 99精品欧美一区二区三区小说 | 精品国产一区二区在线观看| 亚洲亚洲人成综合网络| 日本精品裸体写真集在线观看 | 色88888久久久久久影院野外| 欧美激情一区二区三区| 成人涩涩免费视频| 久久精品亚洲麻豆av一区二区 | 久久精品国产在热久久| 欧美一卡在线观看| 日本大胆欧美人术艺术动态| 久久久久久毛片| 色欧美片视频在线观看在线视频| 看电影不卡的网站| 中文字幕精品在线不卡| 91精品国产综合久久福利软件| 激情六月婷婷久久| 亚洲丝袜美腿综合| 久久综合网色—综合色88| 91啪九色porn原创视频在线观看| 日本少妇一区二区| 国产精品无人区| 欧美一区二区三区免费在线看| 国产一区在线精品| 午夜电影网亚洲视频| 欧美经典一区二区三区| 欧美亚洲一区三区| 成人ar影院免费观看视频| 全国精品久久少妇| 亚洲激情图片qvod| 最新国产の精品合集bt伙计| 日韩免费高清av| 欧美一级久久久久久久大片| 欧美三区免费完整视频在线观看| 国产91露脸合集magnet| 国产一区亚洲一区| 裸体一区二区三区| 久草中文综合在线| 亚洲高清不卡在线| 狠狠色丁香久久婷婷综| 国产三级精品在线| 亚洲欧美日韩国产综合在线| 香港成人在线视频| 国内成人免费视频| 欧美在线观看一二区| 精品国产一区二区亚洲人成毛片| 中文字幕一区视频| 亚洲国产欧美在线| 美国毛片一区二区三区| 精品一区二区免费视频| 国产精品88888| 色综合天天视频在线观看 | 日韩天堂在线观看| 久久精品亚洲精品国产欧美| 亚洲男同性视频| 国产一区二区三区高清播放| 激情综合色综合久久综合| 成人午夜在线免费| 欧美日韩视频专区在线播放| 日韩欧美色电影| 国产清纯在线一区二区www| 国产精品人妖ts系列视频| 亚洲午夜精品久久久久久久久| 丝袜美腿亚洲色图| av在线不卡电影| 亚洲精品一区二区三区影院| 一区二区三区资源| 国产成人av电影在线观看| 欧美日韩一级片在线观看| 国产精品美女久久久久久久| 免费观看日韩av| 欧美主播一区二区三区| 欧美一区2区视频在线观看| 亚洲日本一区二区| 成人免费看片app下载| 日韩免费成人网| 男人的j进女人的j一区| 精品视频在线看| 一区二区三区免费观看| 国产不卡一区视频| 久久久电影一区二区三区| 老司机午夜精品| 日韩午夜小视频| 久久成人久久爱| 精品国产乱码久久久久久老虎| 丝袜诱惑制服诱惑色一区在线观看| 97久久超碰精品国产| 中文字幕一区二区三区四区| 成人国产在线观看| 17c精品麻豆一区二区免费| av中文字幕一区| 亚洲视频一区在线| 91成人国产精品| 亚洲人精品午夜| 欧美吻胸吃奶大尺度电影| 日韩电影在线免费| 日韩视频免费直播| 成a人片国产精品| 亚洲午夜免费电影| 精品成人在线观看| eeuss影院一区二区三区| 一区二区三区不卡视频| 日韩欧美国产三级电影视频| 北岛玲一区二区三区四区| 亚洲国产中文字幕在线视频综合 | 欧美tickling网站挠脚心|