📄 registers.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 + -