| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359 |
- //-----------------------------------------------------------------------------
- // Author : hiyohiyo
- // Mail : hiyohiyo@crystalmark.info
- // Web : http://openlibsys.org/
- // License : The modified BSD license
- //
- // Copyright 2007-2020 OpenLibSys.org. All rights reserved.
- //-----------------------------------------------------------------------------
- // for WinRing0 3.0.x
-
- #pragma once
-
- //#include "stdafx.h"
- #include "OlsDef.h"
- #include "OlsApiInitDef.h"
-
- //-----------------------------------------------------------------------------
- //
- // Prototypes
- //
- //-----------------------------------------------------------------------------
-
- BOOL InitOpenLibSys(HMODULE *hModule);
- BOOL DeinitOpenLibSys(HMODULE *hModule);
-
- //-----------------------------------------------------------------------------
- //
- // Funtions
- //
- //-----------------------------------------------------------------------------
-
- // DLL
- _GetDllStatus GetDllStatus = NULL;
- _GetDllVersion GetDllVersion = NULL;
- _GetDriverVersion GetDriverVersion = NULL;
- _GetDriverType GetDriverType = NULL;
-
- _InitializeOls InitializeOls = NULL;
- _DeinitializeOls DeinitializeOls = NULL;
-
- // CPU
- _IsCpuid IsCpuid = NULL;
- _IsMsr IsMsr = NULL;
- _IsTsc IsTsc = NULL;
-
- _Hlt Hlt = NULL;
- _Rdmsr Rdmsr = NULL;
- _Wrmsr Wrmsr = NULL;
- _Rdpmc Rdpmc = NULL;
- _Cpuid Cpuid = NULL;
- _Rdtsc Rdtsc = NULL;
-
- _HltTx HltTx = NULL;
- _RdmsrTx RdmsrTx = NULL;
- _WrmsrTx WrmsrTx = NULL;
- _RdpmcTx RdpmcTx = NULL;
- _CpuidTx CpuidTx = NULL;
- _RdtscTx RdtscTx = NULL;
-
- _HltPx HltPx = NULL;
- _RdmsrPx RdmsrPx = NULL;
- _WrmsrPx WrmsrPx = NULL;
- _RdpmcPx RdpmcPx = NULL;
- _CpuidPx CpuidPx = NULL;
- _RdtscPx RdtscPx = NULL;
-
- // I/O
- _ReadIoPortByte ReadIoPortByte = NULL;
- _ReadIoPortWord ReadIoPortWord = NULL;
- _ReadIoPortDword ReadIoPortDword = NULL;
-
- _ReadIoPortByteEx ReadIoPortByteEx = NULL;
- _ReadIoPortWordEx ReadIoPortWordEx = NULL;
- _ReadIoPortDwordEx ReadIoPortDwordEx = NULL;
-
- _WriteIoPortByte WriteIoPortByte = NULL;
- _WriteIoPortWord WriteIoPortWord = NULL;
- _WriteIoPortDword WriteIoPortDword = NULL;
-
- _WriteIoPortByteEx WriteIoPortByteEx = NULL;
- _WriteIoPortWordEx WriteIoPortWordEx = NULL;
- _WriteIoPortDwordEx WriteIoPortDwordEx = NULL;
-
- // PCI
- _SetPciMaxBusIndex SetPciMaxBusIndex = NULL;
-
- _ReadPciConfigByte ReadPciConfigByte = NULL;
- _ReadPciConfigWord ReadPciConfigWord = NULL;
- _ReadPciConfigDword ReadPciConfigDword = NULL;
-
- _ReadPciConfigByteEx ReadPciConfigByteEx = NULL;
- _ReadPciConfigWordEx ReadPciConfigWordEx = NULL;
- _ReadPciConfigDwordEx ReadPciConfigDwordEx = NULL;
-
- _WritePciConfigByte WritePciConfigByte = NULL;
- _WritePciConfigWord WritePciConfigWord = NULL;
- _WritePciConfigDword WritePciConfigDword = NULL;
-
- _WritePciConfigByteEx WritePciConfigByteEx = NULL;
- _WritePciConfigWordEx WritePciConfigWordEx = NULL;
- _WritePciConfigDwordEx WritePciConfigDwordEx = NULL;
-
- _FindPciDeviceById FindPciDeviceById = NULL;
- _FindPciDeviceByClass FindPciDeviceByClass = NULL;
-
- // Memory
- #ifdef _PHYSICAL_MEMORY_SUPPORT
- _ReadDmiMemory ReadDmiMemory = NULL;
- _ReadPhysicalMemory ReadPhysicalMemory = NULL;
- _WritePhysicalMemory WritePhysicalMemory = NULL;
- #endif
-
- #ifdef _OPEN_LIB_SYS
- #ifdef _UNICODE
- #define GetOlsString GetOlsStringW
- #else
- #define GetOlsString GetOlsStringA
- #endif
-
- _InstallOpenLibSys InstallOpenLibSys = NULL;
- _UninstallOpenLibSys UninstallOpenLibSys = NULL;
- _GetDriverStatus GetDriverStatus = NULL;
-
- _GetOlsStringA GetOlsStringA = NULL;
- _GetOlsStringW GetOlsStringW = NULL;
- _GetOlsValue GetOlsValue = NULL;
- _SetOlsValue SetOlsValue = NULL;
- #endif
-
- //-----------------------------------------------------------------------------
- //
- // Initialize
- //
- //-----------------------------------------------------------------------------
-
- BOOL InitOpenLibSys(HMODULE *hModule)
- {
- #ifdef _M_X64
- *hModule = LoadLibrary(L"WinRing0x64.dll");
- #else
- *hModule = LoadLibrary(L"WinRing0x32.dll");
- #endif
-
- if(*hModule == NULL)
- {
- return FALSE;
- }
-
- //-----------------------------------------------------------------------------
- // GetProcAddress
- //-----------------------------------------------------------------------------
- // DLL
- GetDllStatus = (_GetDllStatus) GetProcAddress (*hModule, "GetDllStatus");
- GetDllVersion = (_GetDllVersion) GetProcAddress (*hModule, "GetDllVersion");
- GetDriverVersion = (_GetDriverVersion) GetProcAddress (*hModule, "GetDriverVersion");
- GetDriverType = (_GetDriverType) GetProcAddress (*hModule, "GetDriverType");
-
- InitializeOls = (_InitializeOls) GetProcAddress (*hModule, "InitializeOls");
- DeinitializeOls = (_DeinitializeOls) GetProcAddress (*hModule, "DeinitializeOls");
-
- // CPU
- IsCpuid = (_IsCpuid) GetProcAddress (*hModule, "IsCpuid");
- IsMsr = (_IsMsr) GetProcAddress (*hModule, "IsMsr");
- IsTsc = (_IsTsc) GetProcAddress (*hModule, "IsTsc");
- Hlt = (_Hlt) GetProcAddress (*hModule, "Hlt");
- Rdmsr = (_Rdmsr) GetProcAddress (*hModule, "Rdmsr");
- Wrmsr = (_Wrmsr) GetProcAddress (*hModule, "Wrmsr");
- Rdpmc = (_Rdpmc) GetProcAddress (*hModule, "Rdpmc");
- Cpuid = (_Cpuid) GetProcAddress (*hModule, "Cpuid");
- Rdtsc = (_Rdtsc) GetProcAddress (*hModule, "Rdtsc");
- HltTx = (_HltTx) GetProcAddress (*hModule, "HltTx");
- RdmsrTx = (_RdmsrTx) GetProcAddress (*hModule, "RdmsrTx");
- WrmsrTx = (_WrmsrTx) GetProcAddress (*hModule, "WrmsrTx");
- RdpmcTx = (_RdpmcTx) GetProcAddress (*hModule, "RdpmcTx");
- CpuidTx = (_CpuidTx) GetProcAddress (*hModule, "CpuidTx");
- RdtscTx = (_RdtscTx) GetProcAddress (*hModule, "RdtscTx");
- HltPx = (_HltPx) GetProcAddress (*hModule, "HltPx");
- RdmsrPx = (_RdmsrPx) GetProcAddress (*hModule, "RdmsrPx");
- WrmsrPx = (_WrmsrPx) GetProcAddress (*hModule, "WrmsrPx");
- RdpmcPx = (_RdpmcPx) GetProcAddress (*hModule, "RdpmcPx");
- CpuidPx = (_CpuidPx) GetProcAddress (*hModule, "CpuidPx");
- RdtscPx = (_RdtscPx) GetProcAddress (*hModule, "RdtscPx");
-
- // I/O
- ReadIoPortByte = (_ReadIoPortByte) GetProcAddress (*hModule, "ReadIoPortByte");
- ReadIoPortWord = (_ReadIoPortWord) GetProcAddress (*hModule, "ReadIoPortWord");
- ReadIoPortDword = (_ReadIoPortDword) GetProcAddress (*hModule, "ReadIoPortDword");
-
- ReadIoPortByteEx = (_ReadIoPortByteEx) GetProcAddress (*hModule, "ReadIoPortByteEx");
- ReadIoPortWordEx = (_ReadIoPortWordEx) GetProcAddress (*hModule, "ReadIoPortWordEx");
- ReadIoPortDwordEx = (_ReadIoPortDwordEx) GetProcAddress (*hModule, "ReadIoPortDwordEx");
-
- WriteIoPortByte = (_WriteIoPortByte) GetProcAddress (*hModule, "WriteIoPortByte");
- WriteIoPortWord = (_WriteIoPortWord) GetProcAddress (*hModule, "WriteIoPortWord");
- WriteIoPortDword = (_WriteIoPortDword) GetProcAddress (*hModule, "WriteIoPortDword");
-
- WriteIoPortByteEx = (_WriteIoPortByteEx) GetProcAddress (*hModule, "WriteIoPortByteEx");
- WriteIoPortWordEx = (_WriteIoPortWordEx) GetProcAddress (*hModule, "WriteIoPortWordEx");
- WriteIoPortDwordEx = (_WriteIoPortDwordEx) GetProcAddress (*hModule, "WriteIoPortDwordEx");
-
- // PCI
- SetPciMaxBusIndex = (_SetPciMaxBusIndex) GetProcAddress (*hModule, "SetPciMaxBusIndex");
-
- ReadPciConfigByte = (_ReadPciConfigByte) GetProcAddress (*hModule, "ReadPciConfigByte");
- ReadPciConfigWord = (_ReadPciConfigWord) GetProcAddress (*hModule, "ReadPciConfigWord");
- ReadPciConfigDword = (_ReadPciConfigDword) GetProcAddress (*hModule, "ReadPciConfigDword");
-
- ReadPciConfigByteEx = (_ReadPciConfigByteEx) GetProcAddress (*hModule, "ReadPciConfigByteEx");
- ReadPciConfigWordEx = (_ReadPciConfigWordEx) GetProcAddress (*hModule, "ReadPciConfigWordEx");
- ReadPciConfigDwordEx = (_ReadPciConfigDwordEx) GetProcAddress (*hModule, "ReadPciConfigDwordEx");
-
- WritePciConfigByte = (_WritePciConfigByte) GetProcAddress (*hModule, "WritePciConfigByte");
- WritePciConfigWord = (_WritePciConfigWord) GetProcAddress (*hModule, "WritePciConfigWord");
- WritePciConfigDword = (_WritePciConfigDword) GetProcAddress (*hModule, "WritePciConfigDword");
-
- WritePciConfigByteEx = (_WritePciConfigByteEx) GetProcAddress (*hModule, "WritePciConfigByteEx");
- WritePciConfigWordEx = (_WritePciConfigWordEx) GetProcAddress (*hModule, "WritePciConfigWordEx");
- WritePciConfigDwordEx = (_WritePciConfigDwordEx)GetProcAddress (*hModule, "WritePciConfigDwordEx");
-
- FindPciDeviceById = (_FindPciDeviceById) GetProcAddress (*hModule, "FindPciDeviceById");
- FindPciDeviceByClass = (_FindPciDeviceByClass) GetProcAddress (*hModule, "FindPciDeviceByClass");
-
- // Memory
- #ifdef _PHYSICAL_MEMORY_SUPPORT
- ReadDmiMemory = (_ReadDmiMemory) GetProcAddress (*hModule, "ReadDmiMemory");
- ReadPhysicalMemory = (_ReadPhysicalMemory) GetProcAddress (*hModule, "ReadPhysicalMemory");
- WritePhysicalMemory = (_WritePhysicalMemory) GetProcAddress (*hModule, "WritePhysicalMemory");
- #endif
-
- //-----------------------------------------------------------------------------
- // Check Functions
- //-----------------------------------------------------------------------------
- if(!(
- GetDllStatus
- && GetDllVersion
- && GetDriverVersion
- && GetDriverType
- && InitializeOls
- && DeinitializeOls
- && IsCpuid
- && IsMsr
- && IsTsc
- && Hlt
- && HltTx
- && HltPx
- && Rdmsr
- && RdmsrTx
- && RdmsrPx
- && Wrmsr
- && WrmsrTx
- && WrmsrPx
- && Rdpmc
- && RdpmcTx
- && RdpmcPx
- && Cpuid
- && CpuidTx
- && CpuidPx
- && Rdtsc
- && RdtscTx
- && RdtscPx
- && ReadIoPortByte
- && ReadIoPortWord
- && ReadIoPortDword
- && ReadIoPortByteEx
- && ReadIoPortWordEx
- && ReadIoPortDwordEx
- && WriteIoPortByte
- && WriteIoPortWord
- && WriteIoPortDword
- && WriteIoPortByteEx
- && WriteIoPortWordEx
- && WriteIoPortDwordEx
- && SetPciMaxBusIndex
- && ReadPciConfigByte
- && ReadPciConfigWord
- && ReadPciConfigDword
- && ReadPciConfigByteEx
- && ReadPciConfigWordEx
- && ReadPciConfigDwordEx
- && WritePciConfigByte
- && WritePciConfigWord
- && WritePciConfigDword
- && WritePciConfigByteEx
- && WritePciConfigWordEx
- && WritePciConfigDwordEx
- && FindPciDeviceById
- && FindPciDeviceByClass
- #ifdef _PHYSICAL_MEMORY_SUPPORT
- && ReadDmiMemory
- && ReadPhysicalMemory
- && WritePhysicalMemory
- #endif
- ))
- {
- return FALSE;
- }
-
- return InitializeOls();
- }
-
- //-----------------------------------------------------------------------------
- //
- // Deinitialize
- //
- //-----------------------------------------------------------------------------
-
- BOOL DeinitOpenLibSys(HMODULE *hModule)
- {
- BOOL result = FALSE;
-
- if(*hModule == NULL)
- {
- return TRUE;
- }
- else
- {
- DeinitializeOls();
- result = FreeLibrary(*hModule);
- *hModule = NULL;
-
- return result;
- }
- }
-
- //-----------------------------------------------------------------------------
- //
- // Io - Read/Write
- //
- //-----------------------------------------------------------------------------
-
- BYTE InPortB(WORD Port)
- {
- return (BYTE)ReadIoPortByte(Port);
- }
-
- WORD InPortW(WORD Port)
- {
- return (WORD)ReadIoPortWord(Port);
- }
-
- DWORD InPortDW(WORD Port)
- {
- return ReadIoPortDword(Port);
- }
-
- void OutPortB(WORD Port, BYTE Data)
- {
- WriteIoPortByte(Port, Data);
- }
-
- void OutPortW(WORD Port, WORD Data)
- {
- WriteIoPortWord(Port, Data);
- }
-
- void OutPortDW(WORD Port, DWORD Data)
- {
- WriteIoPortDword(Port, Data);
- }
|