亚洲欧美第一页_禁久久精品乱码_粉嫩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韩国va欧美va精品| 狠狠色狠狠色综合系列| 日本韩国一区二区三区| 欧美大片一区二区| 中文字幕亚洲电影| 日韩黄色免费网站| 成人av网站免费观看| 欧美日韩国产成人在线免费| 久久影院电视剧免费观看| 一区二区三区免费网站| 久久99久久99| 欧美日韩一区视频| 国产目拍亚洲精品99久久精品| 亚洲一二三区在线观看| 国产精品18久久久久久久久久久久| 在线免费av一区| 国产情人综合久久777777| 午夜电影一区二区| 97精品国产露脸对白| 精品黑人一区二区三区久久| 一区二区成人在线| 国产精品夜夜嗨| 91精品视频网| 一区二区理论电影在线观看| 国产激情一区二区三区四区| 欧美一区二区播放| 亚洲美腿欧美偷拍| 国产成人精品亚洲777人妖| 欧美精选一区二区| 亚洲三级电影网站| 国产999精品久久| 日韩午夜激情av| 亚洲一区二区三区美女| 95精品视频在线| 国产喂奶挤奶一区二区三区| 日本中文字幕一区二区视频| 色婷婷激情综合| 欧美高清一级片在线观看| 韩国成人在线视频| 日韩一级免费观看| 偷拍与自拍一区| 欧美综合久久久| 亚洲美女屁股眼交| 99久久国产免费看| 国产精品久久毛片av大全日韩| 国产一区二区三区综合| 精品免费国产二区三区| 男女激情视频一区| 欧美乱妇一区二区三区不卡视频| 亚洲欧美另类小说视频| 成人不卡免费av| 国产精品午夜在线| 国产凹凸在线观看一区二区| 久久男人中文字幕资源站| 久久99日本精品| 欧美sm极限捆绑bd| 久久草av在线| 欧美精品一区二区三区蜜桃视频| 乱一区二区av| 欧美变态口味重另类| 麻豆免费精品视频| 精品毛片乱码1区2区3区| 日本三级亚洲精品| 91精品国产品国语在线不卡| 三级不卡在线观看| 91精品国产综合久久久久久漫画| 日韩精品91亚洲二区在线观看| 欧美精品黑人性xxxx| 日一区二区三区| 欧美一区二区三区四区久久| 美女视频黄频大全不卡视频在线播放| 欧美一区二区三区电影| 老司机免费视频一区二区三区| 欧美成人精品二区三区99精品| 激情综合五月天| 亚洲国产精品成人综合| 不卡的看片网站| 亚洲精品国久久99热| 欧美日韩三级视频| 美女在线一区二区| 久久久一区二区三区| 国产不卡视频一区二区三区| 中文字幕在线观看一区| 91久久香蕉国产日韩欧美9色| 亚洲综合丁香婷婷六月香| 欧美精品99久久久**| 激情五月激情综合网| 国产丝袜美腿一区二区三区| 91丝袜国产在线播放| 亚洲国产精品一区二区尤物区| 欧美一区二区三区四区久久| 国产精品一区二区三区99| 国产精品二三区| 欧美精品自拍偷拍动漫精品| 七七婷婷婷婷精品国产| 欧美韩日一区二区三区四区| 在线一区二区三区| 奇米777欧美一区二区| 欧美国产在线观看| 91国在线观看| 久久99日本精品| 日韩理论电影院| 日韩一区二区三区高清免费看看 | 日韩精品一区二区在线观看| 国产成人精品影院| 亚洲国产精品影院| 久久久久久97三级| 欧美色综合影院| 国产精品一级二级三级| 亚洲综合免费观看高清完整版| 欧美成人性福生活免费看| gogogo免费视频观看亚洲一| 丝袜美腿亚洲一区| 国产精品久久夜| 91超碰这里只有精品国产| 高清成人免费视频| 天堂久久一区二区三区| 国产日本欧美一区二区| 欧美日韩aaa| 成人h动漫精品一区二区| 日本亚洲三级在线| 亚洲三级在线免费观看| 2019国产精品| 欧美日本在线视频| av动漫一区二区| 久久精品av麻豆的观看方式| 亚洲久本草在线中文字幕| 精品福利一二区| 欧美日韩aaaaaa| 91麻豆精品秘密| 国产资源在线一区| 天天综合色天天综合色h| 综合欧美亚洲日本| 国产日韩欧美精品在线| 91精品国产综合久久婷婷香蕉| 99国产麻豆精品| 国产激情视频一区二区在线观看| 日韩国产欧美一区二区三区| 亚洲欧美一区二区三区久本道91| 久久久亚洲综合| 日韩午夜在线观看视频| 欧美日韩综合不卡| 91麻豆精品秘密| 成人sese在线| 国产成人小视频| 国产在线乱码一区二区三区| 首页国产丝袜综合| 亚洲小说欧美激情另类| 日韩伦理免费电影| 欧美激情一区二区三区不卡| 精品久久一区二区三区| 日韩一区和二区| 91精品国产综合久久福利| 欧美手机在线视频| 一本到不卡免费一区二区| av电影在线不卡| 豆国产96在线|亚洲| 国内精品免费在线观看| 美女性感视频久久| 免费观看在线综合| 日本网站在线观看一区二区三区| 亚洲一区二区中文在线| 一区二区三区中文字幕在线观看| 国产精品国产三级国产aⅴ入口| 久久久久久97三级| 国产亚洲精品免费| 国产日韩欧美高清在线| 国产免费成人在线视频| 国产清纯在线一区二区www| 久久美女艺术照精彩视频福利播放| 日韩亚洲国产中文字幕欧美| 在线综合视频播放| 日韩亚洲欧美在线观看| 日韩丝袜情趣美女图片| 日韩免费观看高清完整版| 91精品麻豆日日躁夜夜躁| 91麻豆精品91久久久久久清纯| 欧美日韩不卡在线| 欧美一区二区三区精品| 日韩久久免费av| 久久久噜噜噜久久人人看| 国产视频一区二区三区在线观看| 国产午夜亚洲精品不卡| 国产情人综合久久777777| 日本一二三不卡| 综合欧美一区二区三区| 亚洲激情在线播放| 亚洲一区在线视频| 婷婷成人激情在线网| 久久精品国产精品亚洲红杏 | 久久精品欧美一区二区三区不卡 | 精品一区二区在线观看| 国产乱码精品1区2区3区| 成人高清视频在线观看|