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

📄 pci.h

📁 djgpp bt878 capture for DOS
💻 H
字号:
#ifndef _PCI_H
#define _PCI_H

#include "mydefs.h"
#include <dpmi.h>

#define PCI_INT_NUM          0x1a

#define PCI_INSTALLCHECK     0xb101
#define PCI_FINDDEVICE       0xb102
#define PCI_FINDCLASSCODE    0xb103
#define PCI_READCONFIGBYTE   0xb108
#define PCI_READCONFIGWORD   0xb109
#define PCI_READCONFIGDWORD  0xb10a
#define PCI_WRITECONFIGBYTE  0xb10b
#define PCI_WRITECONFIGWORD  0xb10c
#define PCI_WRITECONFIGDWORD 0xb10d

#define SUCCESSFUL           0x00
#define FUNC_NOT_SUPPORTED   0x81
#define BAD_VENDOR_ID        0x83
#define DEVICE_NOT_FOUND     0x86
#define BAD_REGISTER_NUMBER  0x87
#define SET_FAILED           0x88
#define BUFFER_TOO_SMALL     0x89

#define PCI_PASS             0x1
#define PCI_FAIL             0x0

#define PCI_BrooktreeID      0x0109E
#define PCI_Bt848ID          0x350
#define PCI_Bt849ID          0x351
#define PCI_Bt878ID          0x36E
#define PCI_Bt879ID          0x36F

//=============================================
// PCI CONFIGURATION REGISTERS
//=============================================



class PCI
{
    __dpmi_regs regs;
public:
    PCI(void);
    int CheckBIOS(void);
    
    int FindDevice(int devID, int vendID, int devIndex);
    int FindClassCode(int baseclass, int subclass, int interface, int devIndex);
    
    void SetFunctionNumber(int funct_num);
    int GetFunctionNumbet(void);
    
    void SetBusNumber(int bus_num);
    int GetBusNumber(void);
    
    int ReadConfigBYTE(int reg, BYTE *retBYTE, int funct_num = -1, int bus_num = -1);
    int ReadConfigWORD(int reg, WORD *retWORD, int funct_num = -1, int bus_num = -1);
    int ReadConfigDWORD(int reg, DWORD *retDWORD, int funct_num = -1, int bus_num = -1);
    
    int WriteConfigBYTE(int reg, BYTE writeBYTE, int funct_num = -1, int bus_num = -1);
    int WriteConfigWORD(int reg, WORD writeWORD, int funct_num = -1, int bus_num = -1);
    int WriteConfigDWORD(int reg, DWORD writeDWORD, int funct_num = -1, int bus_num = -1);
    
    WORD GetCommandReg( int funct_num=-1, int bus_num=-1 );
    void SetCommandReg( WORD value, int funct_num=-1, int bus_num=-1 );
    
    WORD GetVendorID( int funct_num=-1, int bus_num=-1 );
    WORD GetDeviceID( int funct_num=-1, int bus_num=-1 );
    WORD GetStatusReg( int funct_num=-1, int bus_num=-1 );
    DWORD GetClassCodeReg( int funct_num=-1, int bus_num=-1 );
    BYTE GetRevisionID( int funct_num=-1, int bus_num=-1 );
    BYTE GetBistReg( int funct_num=-1, int bus_num=-1 );
    BYTE GetHeaderType( int funct_num=-1, int bus_num=-1 );
    BYTE GetLatencyTimer( int funct_num=-1, int bus_num=-1 );
    BYTE GetCacheLineSize( int funct_num=-1, int bus_num=-1 );
    DWORD GetBaseAddress(int address = 0, int funct_num = -1, int bus_num = -1);
    WORD GetSubsystemID( int funct_num=-1, int bus_num=-1 );
    WORD GetSubsystemVendorID( int funct_num=-1, int bus_num=-1 );
    DWORD GetROMBaseAddress( int funct_num=-1, int bus_num=-1 );
    DWORD GetCardBusCISPointerReg( int funct_num=-1, int bus_num=-1 ); 
    BYTE GetMaxLat( int funct_num=-1, int bus_num=-1 );
    BYTE GetMinGnt( int funct_num=-1, int bus_num=-1 );
    BYTE GetInterruptPin( int funct_num=-1, int bus_num=-1 );
    BYTE GetInterruptLine( int funct_num=-1, int bus_num=-1 );
    
    BOOL IsIOAccess( int funct_num=-1, int bus_num=-1 );
    void SetIOAccess( BOOL value, int funct_num=-1, int bus_num=-1 );

    BOOL IsMemoryAccess(int funct_num = -1, int bus_num = -1);
    void SetMemoryAccess( BOOL value, int funct_num=-1, int bus_num=-1 );
    
    BOOL IsMaster( int funct_num=-1, int bus_num=-1 );
    void SetMaster( BOOL value, int funct_num=-1, int bus_num=-1 );

    BOOL IsSpecialCycle( int funct_num=-1, int bus_num=-1 );
    void SetSpecialCycle( BOOL value, int funct_num=-1, int bus_num=-1 );
    
    BOOL IsMemoryWriteInval( int funct_num=-1, int bus_num=-1 );
    void SetMemoryWriteInval( BOOL value, int funct_num=-1, int bus_num=-1 );
    
    BOOL IsVGAPaletteSnoop( int funct_num=-1, int bus_num=-1 );
    void SetVGAPaletteSnoop( BOOL value, int funct_num=-1, int bus_num=-1 );
    
    BOOL IsParityError( int funct_num=-1, int bus_num=-1 );
    void SetParityError( BOOL value, int funct_num=-1, int bus_num=-1 );

    BOOL IsWaitCycle( int funct_num=-1, int bus_num=-1 );
    void SetWaitCycle( BOOL value, int funct_num=-1, int bus_num=-1 );

    BOOL IsSystemError( int funct_num=-1, int bus_num=-1 );
    void SetSystemError( BOOL value, int funct_num=-1, int bus_num=-1 );
    
    BOOL IsFastBackToBack( int funct_num=-1, int bus_num=-1 );
    void SetFastBackToBack( BOOL value, int funct_num=-1, int bus_num=-1 );
    
    BOOL CapableFastB2B (void);

    
public: 
    int status;
    int hardware_characteristics;
    int pmode_entry_point;
    int major_rev_number;
    int minor_rev_number;
    int bus_number;
    int function_number;
};

#endif

⌨️ 快捷键说明

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