TRing0 System Level Component v1.0

Copyright (c) 1999 by Andreas Goetz
TRing0 Homepage

Installation

Windows 95/98

No further installation needed.

Windows NT/200

  1. Copy ring0.sys into <WINNT>\System32\Drivers
  2. Add ring0.reg to registry
Attention: both steps must be executed with administrator permissions!

What IS TRing0?

TRing0 is a system level component that gives Delphi program access to system ressources like IO ports, Model Specific Registers (MSR) etc. Normally these ressources cannot be accessed directly by applications, just IO drivers. TRing0 reveals this functionality providing a simple Delphi component.

Public Declarations

    property PortB[Idx:Integer] : BYTE read GetPortB write SetPortB;
    property PortW[Idx:Integer] : WORD read GetPortW write SetPortW;
    property PortD[Idx:Integer] : DWORD read GetPortD write SetPortD;
    property MSR[Idx:Integer] : Int64 read GetMSR write SetMSR;

    function OpenPorts(Lo, Hi : Integer) : Boolean;
    function ClosePorts(Lo, Hi : Integer) : Boolean;

Usage

After installation a TRing0 object provides 4 arrays for granting rand/write access to IO ports and MSRs.

3 Port arrays (one for BYTE, WORD and DWORD access) are for port access. Before performing any port access the port must be opened (though it's really necessary under WinNT only). OpenPort excepts to parameters Lo and Hi that declare a range of ports to be opened.
It is recommmended to close the same ports using ClosePorts before closing the application.

The MSR Array gives access to the Model Specific Registers. The TestRing0 demo application demoinstrates how to use this array to access the Time Stamp Counter (TSC).

Registration

Currently TRing0 is distributed as Delphi 4 compiled unit only.

TRing0 is shareware. The registration fee is 20USD for private use and 50USD for use in commerical applications. The TRing0 source code is available for 100USD.