1 //-----------------------------------------------------------------------------
2 //     Author : hiyohiyo
3 //       Mail : hiyohiyo@crystalmark.info
4 //        Web : http://openlibsys.org/
5 //    License : The modified BSD license
6 //
7 //                     Copyright 2007-2009 OpenLibSys.org. All rights reserved.
8 //-----------------------------------------------------------------------------
9 // for WinRing0 1.3.x
10 
11 #pragma once
12 
13 //-----------------------------------------------------------------------------
14 //
15 // Type Defines
16 //
17 //-----------------------------------------------------------------------------
18 
19 // DLL
20 typedef DWORD (WINAPI *_GetDllStatus) ();
21 typedef DWORD (WINAPI *_GetDllVersion) (PBYTE major, PBYTE minor, PBYTE revision, PBYTE release);
22 typedef DWORD (WINAPI *_GetDriverVersion) (PBYTE major, PBYTE minor, PBYTE revision, PBYTE release);
23 typedef DWORD (WINAPI *_GetDriverType) ();
24 
25 typedef BOOL (WINAPI *_InitializeOls) ();
26 typedef VOID (WINAPI *_DeinitializeOls) ();
27 
28 // CPU
29 typedef BOOL (WINAPI *_IsCpuid) ();
30 typedef BOOL (WINAPI *_IsMsr) ();
31 typedef BOOL (WINAPI *_IsTsc) ();
32 
33 typedef BOOL  (WINAPI *_Hlt) ();
34 typedef DWORD (WINAPI *_Rdmsr) (DWORD index, PDWORD eax, PDWORD edx);
35 typedef DWORD (WINAPI *_Wrmsr) (DWORD index, DWORD eax, DWORD edx);
36 typedef DWORD (WINAPI *_Rdpmc) (DWORD index, PDWORD eax, PDWORD edx);
37 typedef DWORD (WINAPI *_Cpuid) (DWORD index, PDWORD eax, PDWORD ebx, PDWORD ecx, PDWORD edx);
38 typedef DWORD (WINAPI *_Rdtsc) (PDWORD eax, PDWORD edx);
39 
40 typedef BOOL  (WINAPI *_HltTx) (DWORD_PTR threadAffinityMask);
41 typedef DWORD (WINAPI *_RdmsrTx) (DWORD index, PDWORD eax, PDWORD edx, DWORD_PTR threadAffinityMask);
42 typedef DWORD (WINAPI *_WrmsrTx) (DWORD index, DWORD eax, DWORD edx, DWORD_PTR threadAffinityMask);
43 typedef DWORD (WINAPI *_RdpmcTx) (DWORD index, PDWORD eax, PDWORD edx, DWORD_PTR threadAffinityMask);
44 typedef DWORD (WINAPI *_CpuidTx) (DWORD index, PDWORD eax, PDWORD ebx, PDWORD ecx, PDWORD edx, DWORD_PTR threadAffinityMask);
45 typedef DWORD (WINAPI *_RdtscTx) (PDWORD eax, PDWORD edx, DWORD_PTR threadAffinityMask);
46 
47 typedef BOOL  (WINAPI *_HltPx)   (DWORD_PTR processAffinityMask);
48 typedef DWORD (WINAPI *_RdmsrPx) (DWORD index, PDWORD eax, PDWORD edx, DWORD_PTR processAffinityMask);
49 typedef DWORD (WINAPI *_WrmsrPx) (DWORD index, DWORD eax, DWORD edx, DWORD_PTR processAffinityMask);
50 typedef DWORD (WINAPI *_RdpmcPx) (DWORD index, PDWORD eax, PDWORD edx, DWORD_PTR processAffinityMask);
51 typedef DWORD (WINAPI *_CpuidPx) (DWORD index, PDWORD eax, PDWORD ebx, PDWORD ecx, PDWORD edx, DWORD_PTR processAffinityMask);
52 typedef DWORD (WINAPI *_RdtscPx) (PDWORD eax, PDWORD edx, DWORD_PTR processAffinityMask);
53 
54 // I/O
55 typedef BYTE  (WINAPI *_ReadIoPortByte) (WORD address);
56 typedef WORD  (WINAPI *_ReadIoPortWord) (WORD address);
57 typedef DWORD (WINAPI *_ReadIoPortDword) (WORD address);
58 
59 typedef BOOL (WINAPI *_ReadIoPortByteEx) (WORD address, PBYTE value);
60 typedef BOOL (WINAPI *_ReadIoPortWordEx) (WORD address, PWORD value);
61 typedef BOOL (WINAPI *_ReadIoPortDwordEx) (WORD address, PDWORD value);
62 
63 typedef VOID (WINAPI *_WriteIoPortByte) (WORD address, BYTE value);
64 typedef VOID (WINAPI *_WriteIoPortWord) (WORD address, WORD value);
65 typedef VOID (WINAPI *_WriteIoPortDword) (WORD address, DWORD value);
66 
67 typedef BOOL (WINAPI *_WriteIoPortByteEx) (WORD address, BYTE value);
68 typedef BOOL (WINAPI *_WriteIoPortWordEx) (WORD address, WORD value);
69 typedef BOOL (WINAPI *_WriteIoPortDwordEx) (WORD address, DWORD value);
70 
71 // PCI
72 typedef VOID (WINAPI *_SetPciMaxBusIndex) (BYTE max);
73 
74 typedef BYTE  (WINAPI *_ReadPciConfigByte) (DWORD pciAddress, BYTE regAddress);
75 typedef WORD  (WINAPI *_ReadPciConfigWord) (DWORD pciAddress, BYTE regAddress);
76 typedef DWORD (WINAPI *_ReadPciConfigDword) (DWORD pciAddress, BYTE regAddress);
77 
78 typedef BOOL (WINAPI *_ReadPciConfigByteEx) (DWORD pciAddress, DWORD regAddress, PBYTE value);
79 typedef BOOL (WINAPI *_ReadPciConfigWordEx) (DWORD pciAddress, DWORD regAddress, PWORD value);
80 typedef BOOL (WINAPI *_ReadPciConfigDwordEx) (DWORD pciAddress, DWORD regAddress, PDWORD value);
81 
82 typedef VOID (WINAPI *_WritePciConfigByte) (DWORD pciAddress, BYTE regAddress, BYTE value);
83 typedef VOID (WINAPI *_WritePciConfigWord) (DWORD pciAddress, BYTE regAddress, WORD value);
84 typedef VOID (WINAPI *_WritePciConfigDword) (DWORD pciAddress, BYTE regAddress, DWORD value);
85 
86 typedef BOOL (WINAPI *_WritePciConfigByteEx) (DWORD pciAddress, DWORD regAddress, BYTE value);
87 typedef BOOL (WINAPI *_WritePciConfigWordEx) (DWORD pciAddress, DWORD regAddress, WORD value);
88 typedef BOOL (WINAPI *_WritePciConfigDwordEx) (DWORD pciAddress, DWORD regAddress, DWORD value);
89 
90 typedef DWORD (WINAPI *_FindPciDeviceById) (WORD vendorId, WORD deviceId, BYTE index);
91 typedef DWORD (WINAPI *_FindPciDeviceByClass) (BYTE baseClass, BYTE subClass, BYTE programIf, BYTE index);
92 
93 // Memory
94 #ifdef _PHYSICAL_MEMORY_SUPPORT
95 typedef DWORD (WINAPI *_ReadDmiMemory) (PBYTE buffer, DWORD count, DWORD unitSize);
96 typedef DWORD (WINAPI *_ReadPhysicalMemory) (DWORD_PTR address, PBYTE buffer, DWORD count, DWORD unitSize);
97 typedef DWORD (WINAPI *_WritePhysicalMemory) (DWORD_PTR address, PBYTE buffer, DWORD count, DWORD unitSize);
98 #endif
99