Add a color (2 colors can be now defined for a machine).
[temp2RGB.git] / winring0 / OlsApi.h
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 typedef unsigned char BYTE;
14 typedef BYTE *PBYTE;
15 typedef int BOOL;
16 typedef unsigned short WORD;
17 typedef unsigned long DWORD;
18 typedef WORD *PWORD;
19 typedef DWORD *PDWORD;
20 typedef unsigned __int64 ULONG_PTR;
21 typedef ULONG_PTR DWORD_PTR;
22 typedef DWORD_PTR *PDWORD_PTR;
23
24 #define WINAPI __stdcall
25 #define VOID void
26
27 /******************************************************************************
28 **
29 ** DLL Information
30 **
31 ******************************************************************************/
32
33 //-----------------------------------------------------------------------------
34 // GetDllStatus
35 //-----------------------------------------------------------------------------
36 DWORD // DLL Status, defined OLS_DLL_****
37 WINAPI GetDllStatus();
38
39 //-----------------------------------------------------------------------------
40 // GetDllVersion
41 //-----------------------------------------------------------------------------
42 DWORD // DLL Version, defined OLS_VERSION
43 WINAPI GetDllVersion(
44 PBYTE major, // major version
45 PBYTE minor, // minor version
46 PBYTE revision, // revision
47 PBYTE release // release/build
48 );
49
50 //-----------------------------------------------------------------------------
51 // GetDriverVersion
52 //-----------------------------------------------------------------------------
53 DWORD // Device Driver Version, defined OLS_DRIVER_VERSION
54 WINAPI GetDriverVersion(
55 PBYTE major, // major version
56 PBYTE minor, // minor version
57 PBYTE revision, // revision
58 PBYTE release // release/build
59 );
60
61 //-----------------------------------------------------------------------------
62 // GetDriverType
63 //-----------------------------------------------------------------------------
64 DWORD // Device Driver Type, defined OLS_DRIVER_TYPE_****
65 WINAPI GetDriverType();
66
67 //-----------------------------------------------------------------------------
68 // InitializeOls
69 //-----------------------------------------------------------------------------
70 BOOL // TRUE: success, FALSE: failure
71 WINAPI InitializeOls();
72
73 //-----------------------------------------------------------------------------
74 // DeinitializeOls
75 //-----------------------------------------------------------------------------
76 VOID WINAPI DeinitializeOls();
77
78 /******************************************************************************
79 **
80 ** CPU
81 **
82 ******************************************************************************/
83
84 //-----------------------------------------------------------------------------
85 // IsCpuid
86 //-----------------------------------------------------------------------------
87 BOOL // TRUE: support CPUID instruction, FALSE: not support CPUID instruction
88 WINAPI IsCpuid();
89
90 //-----------------------------------------------------------------------------
91 // IsMsr
92 //-----------------------------------------------------------------------------
93 BOOL // TRUE: support MSR(Model-Specific Register), FALSE: not support MSR
94 WINAPI IsMsr();
95
96 //-----------------------------------------------------------------------------
97 // IsTsc
98 //-----------------------------------------------------------------------------
99 BOOL // TRUE: support TSC(Time Stamp Counter), FALSE: not support TSC
100 WINAPI IsTsc();
101
102 //-----------------------------------------------------------------------------
103 // Rdmsr
104 //-----------------------------------------------------------------------------
105 BOOL // TRUE: success, FALSE: failure
106 WINAPI Rdmsr(
107 DWORD index, // MSR index
108 PDWORD eax, // bit 0-31
109 PDWORD edx // bit 32-63
110 );
111
112 //-----------------------------------------------------------------------------
113 // RdmsrTx
114 //-----------------------------------------------------------------------------
115 BOOL // TRUE: success, FALSE: failure
116 WINAPI RdmsrTx(
117 DWORD index, // MSR index
118 PDWORD eax, // bit 0-31
119 PDWORD edx, // bit 32-63
120 DWORD_PTR threadAffinityMask
121 );
122
123 //-----------------------------------------------------------------------------
124 // RdmsrPx
125 //-----------------------------------------------------------------------------
126 BOOL // TRUE: success, FALSE: failure
127 WINAPI RdmsrPx(
128 DWORD index, // MSR index
129 PDWORD eax, // bit 0-31
130 PDWORD edx, // bit 32-63
131 DWORD_PTR processAffinityMask
132 );
133
134 //-----------------------------------------------------------------------------
135 // Wrmsr
136 //-----------------------------------------------------------------------------
137 BOOL // TRUE: success, FALSE: failure
138 WINAPI Wrmsr(
139 DWORD index, // MSR index
140 DWORD eax, // bit 0-31
141 DWORD edx // bit 32-63
142 );
143
144 //-----------------------------------------------------------------------------
145 // WrmsrTx
146 //-----------------------------------------------------------------------------
147 BOOL // TRUE: success, FALSE: failure
148 WINAPI WrmsrTx(
149 DWORD index, // MSR index
150 DWORD eax, // bit 0-31
151 DWORD edx, // bit 32-63
152 DWORD_PTR threadAffinityMask
153 );
154
155 //-----------------------------------------------------------------------------
156 // WrmsrPx
157 //-----------------------------------------------------------------------------
158 BOOL // TRUE: success, FALSE: failure
159 WINAPI WrmsrPx(
160 DWORD index, // MSR index
161 DWORD eax, // bit 0-31
162 DWORD edx, // bit 32-63
163 DWORD_PTR processAffinityMask
164 );
165
166 //-----------------------------------------------------------------------------
167 // Rdpmc
168 //-----------------------------------------------------------------------------
169 BOOL // TRUE: success, FALSE: failure
170 WINAPI Rdpmc(
171 DWORD index, // PMC index
172 PDWORD eax, // bit 0-31
173 PDWORD edx // bit 32-63
174 );
175
176 //-----------------------------------------------------------------------------
177 // RdmsrTx
178 //-----------------------------------------------------------------------------
179 BOOL // TRUE: success, FALSE: failure
180 WINAPI RdpmcTx(
181 DWORD index, // PMC index
182 PDWORD eax, // bit 0-31
183 PDWORD edx, // bit 32-63
184 DWORD_PTR threadAffinityMask
185 );
186
187 //-----------------------------------------------------------------------------
188 // RdmsrPx
189 //-----------------------------------------------------------------------------
190 BOOL // TRUE: success, FALSE: failure
191 WINAPI RdpmcPx(
192 DWORD index, // PMC index
193 PDWORD eax, // bit 0-31
194 PDWORD edx, // bit 32-63
195 DWORD_PTR processAffinityMask
196 );
197
198 //-----------------------------------------------------------------------------
199 // Cpuid
200 //-----------------------------------------------------------------------------
201 BOOL // TRUE: success, FALSE: failure
202 WINAPI Cpuid(
203 DWORD index, // CPUID index
204 PDWORD eax,
205 PDWORD ebx,
206 PDWORD ecx,
207 PDWORD edx
208 );
209
210 //-----------------------------------------------------------------------------
211 // CpuidTx
212 //-----------------------------------------------------------------------------
213 BOOL // TRUE: success, FALSE: failure
214 WINAPI CpuidTx(
215 DWORD index, // CPUID index
216 PDWORD eax,
217 PDWORD ebx,
218 PDWORD ecx,
219 PDWORD edx,
220 DWORD_PTR threadAffinityMask
221 );
222
223 //-----------------------------------------------------------------------------
224 // CpuidPx
225 //-----------------------------------------------------------------------------
226 BOOL // TRUE: success, FALSE: failure
227 WINAPI CpuidPx(
228 DWORD index, // CPUID index
229 PDWORD eax,
230 PDWORD ebx,
231 PDWORD ecx,
232 PDWORD edx,
233 DWORD_PTR processAffinityMask
234 );
235
236 //-----------------------------------------------------------------------------
237 // Rdtsc
238 //-----------------------------------------------------------------------------
239 BOOL // TRUE: success, FALSE: failure
240 WINAPI Rdtsc(
241 PDWORD eax, // bit 0-31
242 PDWORD edx // bit 32-63
243 );
244
245 //-----------------------------------------------------------------------------
246 // RdmsrTx
247 //-----------------------------------------------------------------------------
248 BOOL // TRUE: success, FALSE: failure
249 WINAPI RdtscTx(
250 PDWORD eax, // bit 0-31
251 PDWORD edx, // bit 32-63
252 DWORD_PTR threadAffinityMask
253 );
254
255 //-----------------------------------------------------------------------------
256 // RdmsrPx
257 //-----------------------------------------------------------------------------
258 BOOL // TRUE: success, FALSE: failure
259 WINAPI RdtscPx(
260 PDWORD eax, // bit 0-31
261 PDWORD edx, // bit 32-63
262 DWORD_PTR processAffinityMask
263 );
264
265 //-----------------------------------------------------------------------------
266 // Hlt
267 //-----------------------------------------------------------------------------
268 BOOL // TRUE: success, FALSE: failure
269 WINAPI Hlt();
270
271 //-----------------------------------------------------------------------------
272 // HltTx
273 //-----------------------------------------------------------------------------
274 BOOL // TRUE: success, FALSE: failure
275 WINAPI HltTx(
276 DWORD_PTR threadAffinityMask
277 );
278
279 //-----------------------------------------------------------------------------
280 // HltPx
281 //-----------------------------------------------------------------------------
282 BOOL // TRUE: success, FALSE: failure
283 WINAPI HltTx(
284 DWORD_PTR processAffinityMask
285 );
286
287 /******************************************************************************
288 **
289 ** I/O
290 **
291 ******************************************************************************/
292
293 //-----------------------------------------------------------------------------
294 // ReadIoPortByte
295 //-----------------------------------------------------------------------------
296 BYTE // Read Value
297 WINAPI ReadIoPortByte(
298 WORD port // I/O port address
299 );
300
301 //-----------------------------------------------------------------------------
302 // ReadIoPortWord
303 //-----------------------------------------------------------------------------
304 WORD // Read Value
305 WINAPI ReadIoPortWord(
306 WORD port // I/O port address
307 );
308
309 //-----------------------------------------------------------------------------
310 // ReadIoPortDword
311 //-----------------------------------------------------------------------------
312 DWORD // Read Value
313 WINAPI ReadIoPortDword(
314 WORD port // I/O port address
315 );
316
317 //-----------------------------------------------------------------------------
318 // ReadIoPortByteEx
319 //-----------------------------------------------------------------------------
320 BOOL // TRUE: success, FALSE: failure
321 WINAPI ReadIoPortByteEx(
322 WORD port, // I/O port address
323 PBYTE value // Read Value
324 );
325 //-----------------------------------------------------------------------------
326 // ReadIoPortWordEx
327 //-----------------------------------------------------------------------------
328 BOOL // TRUE: success, FALSE: failure
329 WINAPI ReadIoPortWordEx(
330 WORD port, // I/O port address
331 PWORD value // Read Value
332 );
333 //-----------------------------------------------------------------------------
334 // ReadIoPortDwordEx
335 //-----------------------------------------------------------------------------
336 BOOL // TRUE: success, FALSE: failure
337 WINAPI ReadIoPortDwordEx(
338 WORD port, // I/O port address
339 PDWORD value // Read Value
340 );
341
342 //-----------------------------------------------------------------------------
343 // WriteIoPortByte
344 //-----------------------------------------------------------------------------
345 VOID
346 WINAPI WriteIoPortByte(
347 WORD port, // I/O port address
348 BYTE value // Write Value
349 );
350
351 //-----------------------------------------------------------------------------
352 // WriteIoPortDword
353 //-----------------------------------------------------------------------------
354 VOID
355 WINAPI WriteIoPortDword(
356 WORD port, // I/O port address
357 DWORD value // Write Value
358 );
359
360
361 //-----------------------------------------------------------------------------
362 // WriteIoPortWord
363 //-----------------------------------------------------------------------------
364 VOID
365 WINAPI WriteIoPortWord(
366 WORD port, // I/O port address
367 WORD value // Write Value
368 );
369
370 //-----------------------------------------------------------------------------
371 // WriteIoPortByteEx
372 //-----------------------------------------------------------------------------
373 BOOL // TRUE: success, FALSE: failure
374 WINAPI WriteIoPortByteEx(
375 WORD port, // I/O port address
376 BYTE value // Write Value
377 );
378
379 //-----------------------------------------------------------------------------
380 // WriteIoPortWordEx
381 //-----------------------------------------------------------------------------
382 BOOL // TRUE: success, FALSE: failure
383 WINAPI WriteIoPortWordEx(
384 WORD port, // I/O port address
385 WORD value // Write Value
386 );
387
388
389 //-----------------------------------------------------------------------------
390 // WriteIoPortDwordEx
391 //-----------------------------------------------------------------------------
392 BOOL // TRUE: success, FALSE: failure
393 WINAPI WriteIoPortDwordEx(
394 WORD port, // I/O port address
395 DWORD value // Write Value
396 );
397
398 /******************************************************************************
399 **
400 ** PCI
401 **
402 ******************************************************************************/
403 // pciAddress
404 // 0- 2: Function Number
405 // 3- 7: Device Number
406 // 8-15: PCI Bus Number
407 // 16-31: Reserved
408 // 0xFFFFFFFF : Error
409
410 //-----------------------------------------------------------------------------
411 // SetPciMaxBusNo
412 //-----------------------------------------------------------------------------
413 VOID
414 WINAPI SetPciMaxBusIndex(
415 BYTE max // Max PCI Bus to Scan
416 );
417
418 //-----------------------------------------------------------------------------
419 // ReadPciConfigByte
420 //-----------------------------------------------------------------------------
421 BYTE // Read Value
422 WINAPI ReadPciConfigByte(
423 DWORD pciAddress, // PCI Device Address
424 BYTE regAddress // Configuration Address 0-255
425 );
426
427 //-----------------------------------------------------------------------------
428 // ReadPciConfigWord
429 //-----------------------------------------------------------------------------
430 WORD // Read Value
431 WINAPI ReadPciConfigWord(
432 DWORD pciAddress, // PCI Device Address
433 BYTE regAddress // Configuration Address 0-255
434 );
435
436 //-----------------------------------------------------------------------------
437 // ReadPciConfigDword
438 //-----------------------------------------------------------------------------
439 DWORD // Read Value
440 WINAPI ReadPciConfigDword(
441 DWORD pciAddress, // PCI Device Address
442 BYTE regAddress // Configuration Address 0-255
443 );
444
445 //-----------------------------------------------------------------------------
446 // ReadPciConfigPByte
447 //-----------------------------------------------------------------------------
448 BOOL // Read Value
449 WINAPI ReadPciConfigPByte(
450 DWORD pciAddress, // PCI Device Address
451 DWORD regAddress, // Configuration Address 0-whatever
452 PBYTE value, // Read Value
453 DWORD size
454 );
455
456 //-----------------------------------------------------------------------------
457 // ReadPciConfigByteEx
458 //-----------------------------------------------------------------------------
459 BOOL // TRUE: success, FALSE: failure
460 WINAPI ReadPciConfigByteEx(
461 DWORD pciAddress, // PCI Device Address
462 DWORD regAddress, // Configuration Address 0-whatever
463 PBYTE value // Read Value
464 );
465
466 //-----------------------------------------------------------------------------
467 // ReadPciConfigWordEx
468 //-----------------------------------------------------------------------------
469 BOOL // TRUE: success, FALSE: failure
470 WINAPI ReadPciConfigWordEx(
471 DWORD pciAddress, // PCI Device Address
472 DWORD regAddress, // Configuration Address 0-whatever
473 PWORD value // Read Value
474 );
475
476 //-----------------------------------------------------------------------------
477 // ReadPciConfigDwordEx
478 //-----------------------------------------------------------------------------
479 BOOL // TRUE: success, FALSE: failure
480 WINAPI ReadPciConfigDwordEx(
481 DWORD pciAddress, // PCI Device Address
482 DWORD regAddress, // Configuration Address 0-whatever
483 PDWORD value // Read Value
484 );
485
486 //-----------------------------------------------------------------------------
487 // ReadPciConfigPByteEx
488 //-----------------------------------------------------------------------------
489 BOOL // TRUE: success, FALSE: failure
490 WINAPI ReadPciConfigPByteEx(
491 DWORD pciAddress, // PCI Device Address
492 DWORD regAddress, // Configuration Address 0-whatever
493 PBYTE value, // Read Value
494 DWORD size
495 );
496
497 //-----------------------------------------------------------------------------
498 // WritePciConfigByte
499 //-----------------------------------------------------------------------------
500 VOID
501 WINAPI WritePciConfigByte(
502 DWORD pciAddress, // PCI Device Address
503 BYTE regAddress, // Configuration Address 0-255
504 BYTE value // Write Value
505 );
506
507 //-----------------------------------------------------------------------------
508 // WritePciConfigWord
509 //-----------------------------------------------------------------------------
510 VOID
511 WINAPI WritePciConfigWord(
512 DWORD pciAddress, // PCI Device Address
513 BYTE regAddress, // Configuration Address 0-255
514 WORD value // Write Value
515 );
516
517 //-----------------------------------------------------------------------------
518 // WritePciConfigDword
519 //-----------------------------------------------------------------------------
520 VOID
521 WINAPI WritePciConfigDword(
522 DWORD pciAddress, // PCI Device Address
523 BYTE regAddress, // Configuration Address 0-255
524 DWORD value // Write Value
525 );
526
527 //-----------------------------------------------------------------------------
528 // WritePciConfigPByte
529 //-----------------------------------------------------------------------------
530 VOID
531 WINAPI WritePciConfigPByte(
532 DWORD pciAddress, // PCI Device Address
533 BYTE regAddress, // Configuration Address 0-255
534 PBYTE value, // Write Value
535 DWORD size
536 );
537
538 //-----------------------------------------------------------------------------
539 // WritePciConfigByteEx
540 //-----------------------------------------------------------------------------
541 BOOL // TRUE: success, FALSE: failure
542 WINAPI WritePciConfigByteEx(
543 DWORD pciAddress, // PCI Device Address
544 DWORD regAddress, // Configuration Address 0-whatever
545 BYTE value // Write Value
546 );
547
548 //-----------------------------------------------------------------------------
549 // WritePciConfigWordEx
550 //-----------------------------------------------------------------------------
551 BOOL // TRUE: success, FALSE: failure
552 WINAPI WritePciConfigWordEx(
553 DWORD pciAddress, // PCI Device Address
554 DWORD regAddress, // Configuration Address 0-whatever
555 WORD value // Write Value
556 );
557
558 //-----------------------------------------------------------------------------
559 // WritePciConfigDwordEx
560 //-----------------------------------------------------------------------------
561 BOOL // TRUE: success, FALSE: failure
562 WINAPI WritePciConfigDwordEx(
563 DWORD pciAddress, // PCI Device Address
564 DWORD regAddress, // Configuration Address 0-whatever
565 DWORD value // Write Value
566 );
567
568 //-----------------------------------------------------------------------------
569 // WritePciConfigPByte
570 //-----------------------------------------------------------------------------
571 BOOL // TRUE: success, FALSE: failure
572 WINAPI WritePciConfigPByteEx(
573 DWORD pciAddress, // PCI Device Address
574 BYTE regAddress, // Configuration Address 0-255
575 PBYTE value, // Write Value
576 DWORD size
577 );
578
579 //-----------------------------------------------------------------------------
580 // FindPciDeviceById
581 //-----------------------------------------------------------------------------
582 DWORD // pciAddress, 0xFFFFFFFF: failure
583 WINAPI FindPciDeviceById(
584 WORD vendorId, // Vendor ID
585 WORD deviceId, // Device ID
586 BYTE index // Index
587 );
588
589 //-----------------------------------------------------------------------------
590 // FindPciDeviceByClass
591 //-----------------------------------------------------------------------------
592 DWORD // pciAddress, 0xFFFFFFFF: failure
593 WINAPI FindPciDeviceByClass(
594 BYTE baseClass, // Base Class
595 BYTE subClass, // Sub Class
596 BYTE programIf, // Program Interface
597 BYTE index // Index
598 );
599
600 /******************************************************************************
601 **
602 ** Memory (Special API)
603 **
604 ******************************************************************************/
605
606 #ifdef _PHYSICAL_MEMORY_SUPPORT
607 //-----------------------------------------------------------------------------
608 // ReadDmiMemory
609 //-----------------------------------------------------------------------------
610 DWORD // Read size(byte), 0: failure
611 WINAPI ReadDmiMemory(
612 PBYTE buffer, // Buffer
613 DWORD count, // Count
614 DWORD unitSize // Unit Size (BYTE, WORD, DWORD)
615 );
616
617 //-----------------------------------------------------------------------------
618 // ReadPhysicalMemory
619 //-----------------------------------------------------------------------------
620 DWORD // Read size(byte), 0: failure
621 WINAPI ReadPhysicalMemory(
622 DWORD_PTR address, // Physical Memory Address
623 PBYTE buffer, // Buffer
624 DWORD count, // Count
625 DWORD unitSize // Unit Size (BYTE, WORD, DWORD)
626 );
627
628 //-----------------------------------------------------------------------------
629 // WritePhysicalMemory
630 //-----------------------------------------------------------------------------
631 DWORD // Write size(byte), 0: failure
632 WINAPI WritePhysicalMemory(
633 DWORD_PTR address, // Physical Memory Address
634 PBYTE buffer, // Buffer
635 DWORD count, // Count
636 DWORD unitSize // Unit Size (BYTE, WORD, DWORD)
637 );
638 #endif