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

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

?? diskmain.h

?? 6410BSP3
?? H
?? 第 1 頁 / 共 2 頁
字號:
    inline void WriteWordBuffer(PWORD pBuffer, DWORD dwCount) {
        volatile USHORT * const Port = (volatile USHORT * const)(m_pATAReg+m_dwDataDrvCtrlOffset);
        if (m_pPort->m_pController->m_bisIOMapped)
            WRITE_PORT_BUFFER_USHORT((PUSHORT)Port, pBuffer, dwCount);
        else {
            while( dwCount-- )
                *Port = *pBuffer++;
        }
    }
*/

    // Read/write Error/Feature register
    inline BYTE GetError() {
        return (BYTE) ATA_READ_BYTE(m_pATAReg + m_dwFeatureErrorOffset);
    }
    inline void WriteFeature(BYTE bFeature) {
        ATA_WRITE_BYTE( m_pATAReg + m_dwFeatureErrorOffset, bFeature);
    }
    // Read/write Sector Count register
    inline BYTE GetReason() {
        return (BYTE) ATA_READ_BYTE(m_pATAReg + m_dwSectCntReasonOffset);
    }
    inline void WriteSectorCount(BYTE bValue) {
        ATA_WRITE_BYTE(m_pATAReg + m_dwSectCntReasonOffset, bValue);
    }
    // Write Sector Number register
    inline void WriteSectorNumber(BYTE bValue) {
        ATA_WRITE_BYTE(m_pATAReg + m_dwSectNumOffset, bValue);
    }
    // Read/write Cylinder Low, Cylinder High register
    inline BYTE GetLowCount() {
        return ATA_READ_BYTE(m_pATAReg+ m_dwByteCountLowOffset);
    }
    inline void WriteLowCount(BYTE bValue) {
        ATA_WRITE_BYTE(m_pATAReg + m_dwByteCountLowOffset, bValue);
    }
    inline BYTE GetHighCount() {
        return ATA_READ_BYTE(m_pATAReg+ m_dwByteCountHighOffset);
    }
    inline void WriteHighCount(BYTE bValue) {
        ATA_WRITE_BYTE(m_pATAReg + m_dwByteCountHighOffset, bValue);
    }
    inline WORD GetCount() {
        return GetLowCount() + ((WORD)GetHighCount() << 8);
    }
    // Set DEV bit in Device/Head register
    inline void SelectDevice() {
        ATA_WRITE_BYTE(m_pATAReg + m_dwDrvHeadOffset, (m_dwDevice == 0 ) ? ATA_HEAD_DRIVE_1 : ATA_HEAD_DRIVE_2);
    }
    // Write Device/Head register
    inline void SetDriveHead(BYTE bDriveHead) {
        ATA_WRITE_BYTE(m_pATAReg + m_dwDrvHeadOffset, bDriveHead);
    }
    inline void WriteDriveHeadReg(BYTE bValue) {
        ATA_WRITE_BYTE(m_pATAReg + m_dwDrvHeadOffset, bValue);
    }
    // Read Status register (does not clear pending interrupt)
    inline BYTE GetBaseStatus() {
        BYTE bStatus = ATA_READ_BYTE(m_pATAReg + m_dwCommandStatusOffset);
        if (ZONE_CELOG) CeLogData(TRUE, CELID_ATAPI_BASESTATUS, &bStatus, sizeof(bStatus), 0, CELZONE_ALWAYSON, 0, FALSE);
        return bStatus;
    }
    // Write Command register
    inline void WriteCommand(BYTE bCommand) {
        ATA_WRITE_BYTE(m_pATAReg + m_dwCommandStatusOffset, bCommand);
    }
    // Read/write Alternate Status register (read clears pending interrupt)
    inline BYTE GetAltStatus() {
        return (BYTE) ATA_READ_BYTE(m_pATARegAlt + m_dwAltStatusOffset);
    }
    inline void WriteAltDriveController(BYTE bData) {
        ATA_WRITE_BYTE(m_pATARegAlt + m_dwAltDrvCtrl, bData);
    }
 
    inline BYTE ReadByteFromRDATA() {
        return (BYTE) (*((PBYTE)(m_pATAReg + ATA_PIO_RDATA)));
    }

    inline WORD ReadWordFromRDATA() {
        return (WORD) (*((PUSHORT)(m_pATAReg + ATA_PIO_RDATA)));
    }

    inline DWORD ReadDWordFromRDATA() {
        return (DWORD) (*((PULONG)(m_pATAReg + ATA_PIO_RDATA)));
    }    
    

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

    // DSK_Init calls this before Init; set up register blocks
    virtual VOID ConfigureRegisterBlock(DWORD dwStride);
    // Called by DSK_Init
    virtual BOOL Init(HKEY hActiveKey);
    // Reset controller, enable interrupts, call Identify
    virtual BOOL InitController(BOOL fForce = FALSE);
    // Set m_fUseLBA48 if appropriate
    void ConfigLBA48(void);
    // Return STORAGEDEVICEINFO structure
    virtual DWORD GetDeviceInfo(PIOREQ pIOReq);
    // Return STORAGEDEVICEINFO structure by reading the registry.
    virtual DWORD GetDeviceInfo(PSTORAGEDEVICEINFO psdi);
    // Handle standard (diskio.h), non-CD, non-DVD IOCTL-s
    virtual DWORD MainIoctl(PIOREQ pIOReq);
    // Wait for Status register DRQ bit to assert
    virtual BOOL WaitForDRQ();
    // Wait for a specified Status register bit to assert/negate
    virtual BOOL WaitForDisc(BYTE bStatusType, DWORD dwTimeOut, DWORD dwPeriod = 0);
    // DMA I/O
    virtual DWORD ReadWriteDiskDMA(PIOREQ pIOReq, BOOL fRead = TRUE);
    // Instantiate a CDiskPower object
    virtual CDiskPower *GetDiskPowerInterface(void);
    // Eventually called in response to an IOCTL_POWER_SET
    virtual BOOL SetDiskPowerState(CEDEVICE_POWER_STATE newDx);
    // Base wake up function
    virtual BOOL WakeUp();
    // Acquire this instance's critical section
    virtual void TakeCS();
    // Release this instance's critical section
    virtual void ReleaseCS();
    // Called by DSK_Init; this information is used by CDiskPower
    void SetActiveKey(TCHAR *szActiveKey);
    // Called by DSK_Init; this information is used by CDiskPower
    void SetDeviceKey(TCHAR *szDeviceKey);

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

    // Wait for interrupt
    virtual BOOL WaitForInterrupt(DWORD dwTimeOut) = 0;
    // Enable device interrupt
    virtual void EnableInterrupt() = 0;
 
    // ------------------------------------------------------------------------
    // ------------------------------------------------------------------------

    // Core device/CDisk initialize function
    BOOL Identify();
    // Determine whether this device is present on the channel
    BOOL IsDevicePresent();

    // Wait for Status register BSY bit to negate
    BYTE WaitOnBusy(BOOL fBase);
    // Sleep for @dwTime milliseconds
    void StallExecution(DWORD dwTime);
    // Return interrupt state?
    WORD CheckIntrState();

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

    // Perform ATA/ATAPI soft-reset
    BOOL ResetController(BOOL bSoftReset = FALSE);
    // This function sets the transfer mode to @dwMode; For more information
    // on transfer mode encodings, see ATA/ATAPI-6 R3B 8.46.11 (Set transfer mode)
    BOOL SetTransferMode(BYTE bMode);
    // Send EXECUTE DEVICE DIAGNOSTIC command; Determine whether this device is
    // an ATA device or an ATAPI device
    BOOL SendExecuteDeviceDiagnostic(PBYTE pbDiagnosticCode, PBOOL pfIsAtapi);
    // Send IDENTIFY DEVICE/IDENTIFY PACKET DEVICE command
    BOOL SendIdentifyDevice(BOOL fIsAtapi);
    // Enable write cache through SET FEATURES
    BOOL SetWriteCacheMode(BOOL fEnable);
    // Enable read look-ahead through SET FEATURES
    BOOL SetLookAhead();
    // Non-DMA I/O
    BOOL DoRead(CSgReq* pSgReqWrapper, DWORD dwStartingSector, DWORD dwNumberOfSectors, PDWORD pdwBytesRead);
    BOOL DoRead(PBYTE pbBuf, DWORD dwStartingSector, DWORD dwNumberOfSectors, PDWORD pdwBytesRead);
    BOOL DoReadDMA(PBYTE pbBuf, DWORD dwStartingSector, DWORD dwNumberOfSectors, PDWORD pdwBytesRead);
    DWORD ReadDisk(PIOREQ pIoReq);
    BOOL DoWrite(CSgReq* pSgReqWrapper, DWORD dwStartingSector, DWORD dwNumberOfSectors, PDWORD pdwBytesWritten);
    BOOL DoWrite(PBYTE pbBuf, DWORD dwStartingSector, DWORD dwNumberOfSectors, PDWORD pdwBytesWritten);
    BOOL DoWriteDMA(PBYTE pbBuf, DWORD dwStartingSector, DWORD dwNumberOfSectors, PDWORD pdwBytesWritten);
    DWORD WriteDisk(PIOREQ pIoReq);
    // Issue FLUSH CACHE
    DWORD FlushCache();
    // Send read/write command
    BOOL SendIOCommand(DWORD dwStartSector, DWORD dwNumberOfSectors, BYTE bCmd);
    // Issue Power Management command and implements the non-data command protocol
    BOOL SendDiskPowerCommand(BYTE bCmd, BYTE bParam = 0);
    // Issue ATAPI soft-reset
    void AtapiSoftReset();

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

    // Increment m_dwOpenCount; references to device
    void Open();
    // Decrement m_dwOpenCount; references to device
    void Close();
    // Return DISK_INFO structure
    DWORD GetDiskInfo(PIOREQ pIOReq);
    // Set ISK_INFO structure
    DWORD SetDiskInfo(PIOREQ pIOReq);
    // Return mount name, e.g., "Hard Disk"
    DWORD GetDiskName(PIOREQ pIOReq);
    // Return STORAGE_IDENTIFICATION
    DWORD GetStorageId(PIOREQ pIOReq);
    // Handle DISK_IOCTL_INITIALIZED
    BOOL PostInit(PPOST_INIT_BUF pPostInitBuf);
    // Intercept IOCTL_POWER_Xxx-s (and instantiates a CDiskPower object during
    // IOCTL_POWER_CAPABILITIES) and forwards all other IOCTL-s to MainIoctl
    BOOL PerformIoctl(PIOREQ pIOReq);
    // Validate pointers embedded in scatter/gather requests
    BOOL static ValidateSg(PSG_REQ pSgReq, DWORD InBufLen, DWORD dwArgType, OUT PUCHAR * saveoldptrs);
    // Unmap pointers mapped by ValidateSg, Essentially an array version of CeCloseCallerBuffer
    HRESULT static UnmapSg(
        IN const SG_BUF * sr_sglist,
        IN const PUCHAR * saveoldptrs,
        IN DWORD sr_sglistlen,
        IN DWORD dwArgType) ;

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

    // Determine if Power Management is supported by examining the IDENTIFY
    // DEVICE information
    BOOL IsPMSupported(void);
    // Determines if Power Management is enabled by examining the IDENTIFY
    // DEVICE information
    BOOL IsPMEnabled(void);

    void PowerUp() { m_dwDeviceFlags &= ~DFLAGS_DEVICE_PWRDN; }
    void PowerDown() { m_dwDeviceFlags |= DFLAGS_DEVICE_PWRDN; }

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

    // Return m_fAtapiDevice
    BOOL IsAtapiDevice();
    // Check the IDENTIFY DEVICE data to see if the device is a CD-ROM device
    BOOL IsCDRomDevice();
    // Check the IDENTIDY DEVICE data to see if the device is a disk device
    BOOL IsDiskDevice();
    // Check the IDENTIDY DEVICE data to see if the device is a removable media device
    BOOL IsRemoveableDevice();
    // Check the IDENTIFY DEVICE data to see if the device supports DMA and
    // whether m_fDMAActive is TRUE
    BOOL IsDMASupported();
    // Check the IDENTIFY DEVICE data to see the packet size supported by the device
    WORD GetPacketSize();
    // Check the IDENTIFY DEVICE data to see if a portion of it is valid
    BOOL IsValidCommandSupportInfo();
    // Check the IDENTIFY DEVICE data to see if the device supports the write cache feature
    BOOL IsWriteCacheSupported();
    // Not used
    BOOL IsDRQTypeIRQ();
    // Not used
    BOOL IsDVDROMDevice();

    BYTE ATA_READ_BYTE(PBYTE p);
    WORD ATA_READ_WORD(PUSHORT p);
    ULONG ATA_READ_DWORD(PULONG p);   
    void ATA_WRITE_BYTE(PBYTE p,BYTE v);
    void ATA_WRITE_WORD(PUSHORT p,USHORT v);
    void ATA_WRITE_DWORD(PULONG p,ULONG v);

    void ReadByteBuffer(PBYTE pBuffer, DWORD dwCount);
    void ReadWordBuffer(PWORD pBuffer, DWORD dwCount);
    void WriteByteBuffer(PBYTE pBuffer, DWORD dwCount);
    void WriteWordBuffer(PWORD pBuffer, DWORD dwCount);
  
    

    void WaitForNoBusyStatus(void);

    void SetConfigMode(int mode, int isWriteMode);

    int SetTransferCommand(UINT32 command);

    virtual void SetPioMode(UCHAR pmode) = 0;
    virtual void SetUdmaMode(void) = 0;
 };

#define ATA_CMD_STOP 0
#define ATA_CMD_START 1
#define ATA_CMD_ABORT 2

#define PIO_CPU 0
#define PIO_DMA 1
#define UDMA 2


#define PIO0 0
#define PIO1 1
#define PIO2 2
#define PIO3 3
#define PIO4 4


#define UDMA0 0
#define UDMA1 1
#define UDMA2 2
#define UDMA3 3
#define UDMA4 4

#endif // _DISKMAIN_H_

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区四区不卡视频| 欧美在线观看一区二区| 视频一区中文字幕国产| 一区二区高清在线| 午夜精品国产更新| 蜜臀久久99精品久久久久久9| 亚洲一区自拍偷拍| 午夜久久久影院| 日韩**一区毛片| 久热成人在线视频| 国产在线一区二区| 成人免费黄色大片| av中文字幕亚洲| 欧美性淫爽ww久久久久无| 欧美日韩一区精品| 日韩欧美aaaaaa| 国产三级一区二区三区| 综合欧美一区二区三区| 亚洲制服欧美中文字幕中文字幕| 亚洲va欧美va人人爽| 免费在线观看不卡| 国产高清亚洲一区| 在线一区二区三区四区| 欧美三级中文字幕| 久久先锋影音av| 中文字幕一区不卡| 天天综合网天天综合色| 国产一级精品在线| 色综合久久久网| 精品日韩欧美在线| 亚洲第一在线综合网站| 日韩在线一区二区| 国产91精品精华液一区二区三区| 成人av免费在线播放| 欧美在线观看视频在线| 精品播放一区二区| 亚洲一区中文日韩| 国产成人午夜片在线观看高清观看| 91香蕉视频污在线| 精品国产第一区二区三区观看体验| 中文字幕一区二区三区在线不卡| 午夜视频一区在线观看| 国产mv日韩mv欧美| 欧美一区二区在线不卡| 日韩一区有码在线| 精品亚洲成a人| 欧美日韩在线播放一区| 中文字幕中文在线不卡住| 麻豆专区一区二区三区四区五区| www.色精品| 久久久久高清精品| 日韩精品一二三| 欧美在线观看你懂的| 中文字幕精品—区二区四季| 蜜桃免费网站一区二区三区| 欧洲av在线精品| 国产精品传媒入口麻豆| 国产美女精品一区二区三区| 日韩一区二区三区三四区视频在线观看| 国产精品免费网站在线观看| 另类小说色综合网站| 在线成人av网站| 一区二区三区精品久久久| 99久久精品免费看国产 | 亚洲日本护士毛茸茸| 国产最新精品免费| 日韩欧美国产wwwww| 日韩精品视频网| 欧美电影影音先锋| 视频一区二区三区中文字幕| 欧美在线观看一二区| 亚洲高清不卡在线观看| 欧美在线播放高清精品| 亚洲电影一级片| 欧美日韩免费在线视频| 日韩制服丝袜av| 日韩丝袜情趣美女图片| 蜜臀91精品一区二区三区| 91精品国产综合久久久久久漫画 | 欧美激情在线一区二区三区| 国产一区二区美女| 国产欧美精品一区二区三区四区| 国产综合一区二区| 欧美国产禁国产网站cc| 99riav一区二区三区| 亚洲色图清纯唯美| 欧美吞精做爰啪啪高潮| 日韩电影在线免费| 精品国产一区二区三区久久影院| 激情成人综合网| 国产精品国产三级国产有无不卡 | 欧美成人官网二区| 国产一区二区剧情av在线| 亚洲国产成人自拍| 色婷婷国产精品综合在线观看| 一区二区三区国产精华| 欧美一区二区三区免费大片 | 国产精品12区| 亚洲欧美日韩在线播放| 欧美日韩高清一区二区三区| 久久国产精品区| 国产精品美女一区二区三区| 欧美无乱码久久久免费午夜一区| 日本视频一区二区| 国产精品久久久久久久久免费相片 | 国产制服丝袜一区| 国产精品毛片久久久久久| 在线观看91视频| 激情五月播播久久久精品| 国产精品萝li| 91精品国产高清一区二区三区| 国产精品综合一区二区| 亚洲在线中文字幕| 国产欧美一区二区精品忘忧草| 欧美综合亚洲图片综合区| 久久爱www久久做| 亚洲午夜一区二区三区| 国产三级精品三级| 欧美肥胖老妇做爰| 一本色道久久综合亚洲aⅴ蜜桃| 日韩不卡手机在线v区| 亚洲欧美色图小说| 欧美精彩视频一区二区三区| 欧美喷水一区二区| 972aa.com艺术欧美| 国模少妇一区二区三区| 天堂影院一区二区| 亚洲男人的天堂网| 国产日韩欧美综合一区| 日韩欧美亚洲一区二区| 欧美亚洲精品一区| 91麻豆精品一区二区三区| 国产精品综合久久| 老司机一区二区| 午夜久久久久久| 国产在线视视频有精品| 亚洲v中文字幕| 亚洲激情成人在线| 最新成人av在线| 国产精品毛片a∨一区二区三区| 精品福利在线导航| 精品国产乱码久久久久久浪潮| 欧美日韩一二三区| 欧美日韩在线免费视频| 在线免费观看日本欧美| 一本色道**综合亚洲精品蜜桃冫| www.欧美.com| 99久久精品国产精品久久 | 亚洲人吸女人奶水| 国产精品亲子伦对白| 国产欧美日韩另类一区| 欧美国产激情二区三区| 亚洲国产岛国毛片在线| 亚洲欧美综合另类在线卡通| ...xxx性欧美| 亚洲人成电影网站色mp4| 亚洲欧美另类图片小说| 亚洲中国最大av网站| 亚洲第一二三四区| 全国精品久久少妇| 久久国产麻豆精品| 福利电影一区二区| 99久久综合狠狠综合久久| 91碰在线视频| 91福利精品视频| 欧美一区二区在线不卡| 久久综合久久综合久久综合| 国产网站一区二区| 国产精品国产三级国产专播品爱网 | 国产.精品.日韩.另类.中文.在线.播放| 国产在线播放一区| 97久久久精品综合88久久| 欧美亚洲免费在线一区| 日韩一区二区视频在线观看| 久久精品欧美日韩精品 | 欧美视频中文一区二区三区在线观看| 在线免费一区三区| 日韩精品一区在线观看| 亚洲国产精华液网站w| 一区二区久久久久久| 青娱乐精品视频在线| 国产999精品久久| 欧美亚洲动漫精品| 久久亚洲精华国产精华液 | 午夜在线成人av| 极品美女销魂一区二区三区免费| 大陆成人av片| 91精品一区二区三区久久久久久| 久久精品一区二区| 亚洲精选一二三| 久久国产精品色| 在线欧美日韩国产| 国产女主播在线一区二区| 亚洲国产精品久久久久婷婷884 | 五月天一区二区| 9人人澡人人爽人人精品| 91精品福利在线一区二区三区 | 麻豆精品一区二区三区| 色综合一区二区| 久久精品网站免费观看|