Ring0 has always been a target of the programmer, due to its quite complex
Sex, for most people, this is not a very easy thing. Use VXD
It is more incapable to VMD. Some stuff is given here, I hope to help.
Here is a Winio Libraray, which is mainly composed of 8 functions.
1, BOOL _STDCALL INITIALIZEWINIO ()
2, void _stdcall shutdownwinio ()
3, BOOL _STDCALL GETPORTVAL (Word Wportdr, PDWord Pdwportval, Byte Bsize);
4, BOOL _STDCALL SETPORTVAL (Word Wportddr, DWORD DWPORTVAL, BYTE BSIZE);
5, PBYTE _STDCALL MAPPHYSTOLIN (PBYTE PBPHYSADDR, DWORD DWPHYSSIZE, HANDLE * PPHYSICALMORYHANDLE)
6, BOOL _STDCALL UNMAPPHYSICEMORY (Handle PhysicalMemoryHandle, Pbyte Pblinaddr)
7, BOOL _STDCALL GETPHYSLONG (PBYTE PBPHYSADDR, PDWORD PDWPHYSVAL);
8, BOOL _STDCALL SEPHYSLONG (PBYTE PBPHYSADDR, DWORD DWPHYSVAL);
I will know what I mean when I look at it.
And the operation of GDT, LDT or IDT, casually Win32 book
Both have been introduced, I believe that it is not difficult to everyone.
Give WinIo Libraray: Win Lib