⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 registers.h

📁 pci 底层驱动
💻 H
字号:
//
//  File:   Registers.h
//  Description: The declaration of class RegisterIo
//
//  Created:  Thur. Oct 24, 2002
//
//
// Copyright and Disclaimer:
//
//   ---------------------------------------------------------------
//   THIS SOFTWARE 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.
//
//   IN NO EVENT SHALL CONEXANT BE LIABLE TO ANY PARTY FOR DIRECT,
//   INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
//   INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE
//   AND ITS DOCUMENTATION, EVEN IF CONEXANT HAS BEEN ADVISED OF THE
//   POSSIBILITY OF SUCH DAMAGE.
//
//   Copyright (c) 2000-2001 Conexant Systems, Inc.
//
//   All Rights Reserved.
//   ---------------------------------------------------------------
//
// Module Revision Id:
//
//

#ifndef _REGISTERS_H_
#define _REGISTERS_H_

//
//Class RegisterIo
//
// Allows access to device registers by providing methods like readDword, writeDword etc.
//

class RegisterIo{
public:
    RegisterIo(PBYTE memory_base);

    VOID writeByte(DWORD register_offset, BYTE value);
    BYTE readByte(DWORD register_offset);

    VOID writeDword(DWORD register_offset, DWORD value);
    DWORD readDword(DWORD register_offset);

private:
    PBYTE                    _memory_base;                          
};

/////////////////////////////////////////////////////////////////////////////////////////
//RegisterIo::RegisterIo
//
// Contructor.  Initializes the memory base.  This is called when the Adapter object is 
// allocated.
//
inline RegisterIo::RegisterIo(PBYTE memory_base):
_memory_base(memory_base)
{
    dbgLogTrace(("Memory Range = %lx\n", _memory_base));
}


/////////////////////////////////////////////////////////////////////////////////////////
//RegisterIo::writeByte
//
// Write a byte to a register
//
inline VOID RegisterIo::writeByte(DWORD register_offset, BYTE value)
{
    WRITE_REGISTER_UCHAR(PUCHAR(_memory_base + register_offset), value);
}

/////////////////////////////////////////////////////////////////////////////////////////
//RegisterIo::readByte
//
// Read a byte from a register
//
inline BYTE RegisterIo::readByte(DWORD register_offset)
{
    return READ_REGISTER_UCHAR(PUCHAR(_memory_base + register_offset));
}

/////////////////////////////////////////////////////////////////////////////////////////
//RegisterIo::writeDword
//
// write a DWORD to a register
//
inline VOID RegisterIo::writeDword(DWORD register_offset, DWORD value)
{
    WRITE_REGISTER_ULONG(PULONG(_memory_base + register_offset), value);
}

/////////////////////////////////////////////////////////////////////////////////////////
//RegisterIo::readDword
// 
// Read a DWORD from a register
//
inline DWORD RegisterIo::readDword(DWORD register_offset)
{
    return READ_REGISTER_ULONG(PULONG(_memory_base + register_offset));
}

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -