summaryrefslogblamecommitdiffstats
path: root/private/os2/inc/os2nt.h
blob: b47b3286fb2b718e885d807666c7886672a934dc (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986

























































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































                                                                            
/*++

Copyright (c) 1989  Microsoft Corporation

Module Name:

    os2nt.h

Abstract:

    Prototypes for NT functions that are called from Win32 only os2ss files.

Author:

    Michael Jarus (mjarus) 21-Dec-1992

Environment:

    User Mode Only

Revision History:

--*/

/****************************************
 *    Definitions from nt.h and ntrtl.h
 ***************************************/

#ifndef NT_INCLUDED // or _NTRTL_

VOID
RtlFillMemoryUlong (
   IN PVOID Destination,
   IN ULONG Length,
   IN ULONG Pattern
   );

#if DBG

#define KdPrint(_x_) DbgPrint _x_

ULONG
DbgPrint(
    PCH Format,
    ...
    );

VOID
RtlAssert(
    PVOID FailedAssertion,
    PVOID FileName,
    ULONG LineNumber,
    PCHAR Message OPTIONAL
    );

#define ASSERT( exp ) \
    if (!(exp)) \
        RtlAssert( #exp, __FILE__, __LINE__, NULL )

#define ASSERTMSG( msg, exp ) \
    if (!(exp)) \
        RtlAssert( #exp, __FILE__, __LINE__, msg )

#else

#define KdPrint(_x_)

#define ASSERT( exp )
#define ASSERTMSG( msg, exp )
#endif // DBG

#endif // NT_INCLUDED

/************************************
 *  Internal definitions from Win32
 ***********************************/

BOOL
VerifyConsoleIoHandle(
    HANDLE hIoHandle
    );

#ifdef DBCS
// MSKK Feb.10.1993 V-AkihiS
/*******************************************
 *  Intrenal definitions from Win32 for DBCS
 *******************************************/
BOOL
GetConsoleNlsMode(
    IN HANDLE hConsole,
    OUT PDWORD lpdwNlsMode
    );

BOOL
SetConsoleNlsMode(
    IN HANDLE hConsole,
    IN DWORD fdwNlsMode
    );

// MSKK Jul.02.1992 KazuM
BOOL
GetConsoleCharType(
    IN HANDLE hConsole,
    IN COORD coordCheck,
    OUT PDWORD pdwType
    );

#define CHAR_TYPE_SBCS     0   // Displayed SBCS character
#define CHAR_TYPE_LEADING  2   // Displayed leading byte of DBCS
#define CHAR_TYPE_TRAILING 3   // Displayed trailing byte of DBCS
#endif
#ifdef JAPAN
// MSKK May.11.1993 V-AkihiS

// kbdjpn.h


//
// Returned this value as keyboard type of GetKeyboardType()
//
#define KBD_TYPE_JAPAN         7

// There are Microsoft keyboard types
#define SUB_KBD_TYPE_MICROSOFT 0x00
#define MICROSOFT_KBD_101_TYPE 0
#define MICROSOFT_KBD_AX_TYPE  1
#define MICROSOFT_KBD_106_TYPE 2
#define MICROSOFT_KBD_002_TYPE 3
#define MICROSOFT_KBD_001_TYPE 4
#define MICROSOFT_KBD_FUNC     12

// There are AX keyboard types
#define SUB_KBD_TYPE_AX        0x01
#define AX_KBD_DESKTOP_TYPE    1
#define AX_KBD_DESKTOP_FUNC    12

// There are EPSON keyboard types
#define SUB_KBD_TYPE_EPSON     0x04

// There are FUJITSU keyboard types
#define SUB_KBD_TYPE_FUJITSU   0x05
#define FUJITSU_KBD_JIS_TYPE   0
#define FUJITSU_KBD_OASYS_TYPE 1

// There are IBM keyboard types
#define SUB_KBD_TYPE_IBM       0x07
#define IBM_KBD_001_TYPE       1
#define IBM_KBD_002_TYPE       2
#define IBM_KBD_003_TYPE       3
#define IBM_KBD_A01_TYPE       4
#define IBM_KBD_S_TYPE         5

#define IBM_KBD_002_FUNC       12
#define IBM_KBD_A01_FUNC       12

// There are MATSUSITA keyboard types
#define SUB_KBD_TYPE_MATSUSITA 0x0a

// There are NEC keyboard types
#define SUB_KBD_TYPE_NEC       0x0d
#define NEC_KBD_NORMAL_TYPE    1
#define NEC_KBD_N_MODE_TYPE    2
#define NEC_KBD_H_MODE_TYPE    3
#define NEC_KBD_LAPTOP_TYPE    4

#define NEC_KBD_NORMAL_FUNC    15
#define NEC_KBD_N_MODE_FUNC    10
#define NEC_KBD_H_MODE_FUNC    15
#define NEC_KBD_LAPTOP_FUNC    15

// There are TOSHIBA keyboard types
#define SUB_KBD_TYPE_TOSHIBA   0x12
#define TOSHIBA_KBD_LAPTOP_TYPE        1
#define TOSHIBA_KBD_LAPTOP_TENKEY_TYPE 2
#define TOSHIBA_KBD_DESKTOP_TYPE       3
#define TOSHIBA_KBD_J3100GX_TYPE       4

#define TOSHIBA_KBD_LAPTOP_FUNC        10
#define TOSHIBA_KBD_LAPTOP_TENKEY_FUNC 10
#define TOSHIBA_KBD_DESKTOP_FUNC       12
#define TOSHIBA_KBD_J3100GX_FUNC       10
#endif

/********************************************************
 *    Definitions of debug Win32 API (ssrtl\sswinapi.c)
 *******************************************************/

#if DBG
BOOL
Or2WinPeekConsoleInputA(
    PSZ FuncName,
    HANDLE hConsoleInput,
    PINPUT_RECORD lpBuffer,
    DWORD nLength,
    LPDWORD lpNumberOfEventsRead
    );

BOOL
Or2WinReadConsoleInputA(
    PSZ FuncName,
    HANDLE hConsoleInput,
    PINPUT_RECORD lpBuffer,
    DWORD nLength,
    LPDWORD lpNumberOfEventsRead
    );

BOOL
Or2WinWriteConsoleInputA(
    PSZ FuncName,
    HANDLE hConsoleInput,
    PINPUT_RECORD lpBuffer,
    DWORD nLength,
    LPDWORD lpNumberOfEventsWritten
    );

BOOL
Or2WinReadConsoleOutputCharacterA(
    PSZ FuncName,
    HANDLE hConsoleOutput,
    LPSTR lpCharacter,
    DWORD nLength,
    COORD dwReadCoord,
    LPDWORD lpNumberOfCharsRead
    );

BOOL
Or2WinReadConsoleOutputCharacterW(
    PSZ FuncName,
    HANDLE hConsoleOutput,
    LPWSTR lpCharacter,
    DWORD nLength,
    COORD dwReadCoord,
    LPDWORD lpNumberOfCharsRead
    );

BOOL
Or2WinReadConsoleOutputAttribute(
    PSZ FuncName,
    HANDLE hConsoleOutput,
    LPWORD lpAttribute,
    DWORD nLength,
    COORD dwReadCoord,
    LPDWORD lpNumberOfAttrsRead
    );

BOOL
Or2WinWriteConsoleOutputCharacterA(
    PSZ FuncName,
    HANDLE hConsoleOutput,
    LPSTR lpCharacter,
    DWORD nLength,
    COORD dwWriteCoord,
    LPDWORD lpNumberOfCharsWritten
    );

BOOL
Or2WinWriteConsoleOutputCharacterW(
    PSZ FuncName,
    HANDLE hConsoleOutput,
    LPWSTR lpCharacter,
    DWORD nLength,
    COORD dwWriteCoord,
    LPDWORD lpNumberOfCharsWritten
    );

BOOL
Or2WinWriteConsoleOutputAttribute(
    PSZ FuncName,
    HANDLE hConsoleOutput,
    LPWORD lpAttribute,
    DWORD nLength,
    COORD dwWriteCoord,
    LPDWORD lpNumberOfAttrsWritten
    );

BOOL
Or2WinFillConsoleOutputCharacterA(
    PSZ FuncName,
    HANDLE hConsoleOutput,
    CHAR  cCharacter,
    DWORD  nLength,
    COORD  dwWriteCoord,
    LPDWORD lpNumberOfCharsWritten
    );

BOOL
Or2WinFillConsoleOutputAttribute(
    PSZ FuncName,
    HANDLE hConsoleOutput,
    WORD   wAttribute,
    DWORD  nLength,
    COORD  dwWriteCoord,
    LPDWORD lpNumberOfAttrsWritten
    );

BOOL
Or2WinGetConsoleMode(
    PSZ FuncName,
    HANDLE hConsoleHandle,
    LPDWORD lpMode
    );

BOOL
Or2WinGetNumberOfConsoleInputEvents(
    PSZ FuncName,
    HANDLE hConsoleInput,
    LPDWORD lpNumberOfEvents
    );

BOOL
Or2WinGetConsoleScreenBufferInfo(
    PSZ FuncName,
    HANDLE hConsoleOutput,
    PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo
    );

COORD
Or2WinGetLargestConsoleWindowSize(
    PSZ FuncName,
    HANDLE hConsoleOutput
    );

BOOL
Or2WinGetConsoleCursorInfo(
    PSZ FuncName,
    HANDLE hConsoleOutput,
    PCONSOLE_CURSOR_INFO lpConsoleCursorInfo
    );

BOOL
Or2WinGetNumberOfConsoleMouseButtons(
    PSZ FuncName,
    LPDWORD lpNumberOfMouseButtons
    );

BOOL
Or2WinSetConsoleMode(
    PSZ FuncName,
    HANDLE hConsoleHandle,
    DWORD dwMode
    );

BOOL
Or2WinSetConsoleActiveScreenBuffer(
    PSZ FuncName,
    HANDLE hConsoleOutput
    );

BOOL
Or2WinSetConsoleScreenBufferSize(
    PSZ FuncName,
    HANDLE hConsoleOutput,
    COORD dwSize
    );

BOOL
Or2WinSetConsoleCursorPosition(
    PSZ FuncName,
    HANDLE hConsoleOutput,
    COORD dwCursorPosition
    );

BOOL
Or2WinSetConsoleCursorInfo(
    PSZ FuncName,
    HANDLE hConsoleOutput,
    PCONSOLE_CURSOR_INFO lpConsoleCursorInfo
    );

BOOL
Or2WinScrollConsoleScreenBufferA(
    PSZ FuncName,
    HANDLE hConsoleOutput,
    PSMALL_RECT lpScrollRectangle,
    PSMALL_RECT lpClipRectangle,
    COORD dwDestinationOrigin,
    PCHAR_INFO lpFill
    );

BOOL
Or2WinScrollConsoleScreenBufferW(
    PSZ FuncName,
    HANDLE hConsoleOutput,
    PSMALL_RECT lpScrollRectangle,
    PSMALL_RECT lpClipRectangle,
    COORD dwDestinationOrigin,
    PCHAR_INFO lpFill
    );

BOOL
Or2WinSetConsoleWindowInfo(
    PSZ FuncName,
    HANDLE hConsoleOutput,
    BOOL bAbsolute,
    PSMALL_RECT lpConsoleWindow
    );

BOOL
Or2WinSetConsoleTextAttribute(
    PSZ FuncName,
    HANDLE hConsoleOutput,
    WORD wAttributes
    );

BOOL
Or2WinSetConsoleCtrlHandler(
    PSZ FuncName,
    PHANDLER_ROUTINE HandlerRoutine,
    BOOL Add
    );

DWORD
Or2WinGetConsoleTitleW(
    PSZ FuncName,
    LPWSTR lpConsoleTitle,
    DWORD nSize
    );

BOOL
Or2WinSetConsoleTitleA(
    PSZ FuncName,
    LPSTR lpConsoleTitle
    );

BOOL
Or2WinSetConsoleTitleW(
    PSZ FuncName,
    LPWSTR lpConsoleTitle
    );

BOOL
Or2WinWriteConsoleA(
    PSZ FuncName,
    HANDLE hConsoleOutput,
    CONST VOID *lpBuffer,
    DWORD nNumberOfCharsToWrite,
    LPDWORD lpNumberOfCharsWritten,
    LPVOID lpReserved
    );

HANDLE
Or2WinCreateConsoleScreenBuffer(
    PSZ FuncName,
    DWORD dwDesiredAccess,
    DWORD dwShareMode,
    LPSECURITY_ATTRIBUTES lpSecurityAttributes,
    DWORD dwFlags,
    PVOID lpScreenBufferData
    );

UINT
Or2WinGetConsoleCP(
    PSZ FuncName
    );

BOOL
Or2WinSetConsoleCP(
    PSZ FuncName,
    UINT wCodePageID
    );

UINT
Or2WinGetConsoleOutputCP(
    PSZ FuncName
    );

BOOL
Or2WinSetConsoleOutputCP(
    PSZ FuncName,
    UINT wCodePageID
    );

BOOL
Or2WinBeep(
    PSZ     FuncName,
    DWORD dwFreq,
    DWORD dwDuration
    );

BOOL
Or2WinCloseHandle(
    PSZ     FuncName,
    HANDLE hObject
    );

HANDLE
Or2WinCreateEventW(
    PSZ     FuncName,
    LPSECURITY_ATTRIBUTES lpEventAttributes,
    BOOL bManualReset,
    BOOL bInitialState,
    LPWSTR lpName
    );

HANDLE
Or2WinCreateFileA(
    PSZ     FuncName,
    LPCSTR lpFileName,
    DWORD dwDesiredAccess,
    DWORD dwShareMode,
    LPSECURITY_ATTRIBUTES lpSecurityAttributes,
    DWORD dwCreationDisposition,
    DWORD dwFlagsAndAttributes,
    HANDLE hTemplateFile
    );

HANDLE
Or2WinCreateFileW(
    PSZ     FuncName,
    LPCWSTR lpFileName,
    DWORD dwDesiredAccess,
    DWORD dwShareMode,
    LPSECURITY_ATTRIBUTES lpSecurityAttributes,
    DWORD dwCreationDisposition,
    DWORD dwFlagsAndAttributes,
    HANDLE hTemplateFile
    );

BOOL
Or2WinCreateProcessA(
    PSZ     FuncName,
    LPCSTR lpApplicationName,
    LPCSTR lpCommandLine,
    LPSECURITY_ATTRIBUTES lpProcessAttributes,
    LPSECURITY_ATTRIBUTES lpThreadAttributes,
    BOOL bInheritHandles,
    DWORD dwCreationFlags,
    LPVOID lpEnvironment,
    LPSTR lpCurrentDirectory,
    LPSTARTUPINFOA lpStartupInfo,
    LPPROCESS_INFORMATION lpProcessInformation
    );

HANDLE
Or2WinCreateThread(
    PSZ     FuncName,
    LPSECURITY_ATTRIBUTES lpThreadAttributes,
    DWORD dwStackSize,
    LPTHREAD_START_ROUTINE lpStartAddress,
    LPVOID lpParameter,
    DWORD dwCreationFlags,
    LPDWORD lpThreadId
    );

BOOL
Or2WinDuplicateHandle(
    PSZ     FuncName,
    HANDLE hSourceProcessHandle,
    HANDLE hSourceHandle,
    HANDLE hTargetProcessHandle,
    LPHANDLE lpTargetHandle,
    DWORD dwDesiredAccess,
    BOOL bInheritHandle,
    DWORD dwOptions
    );

VOID
Or2WinEnterCriticalSection(
    PSZ     FuncName,
    LPCRITICAL_SECTION lpCriticalSection
    );

LPSTR
Or2WinGetCommandLineA(
    PSZ     FuncName
    );

COORD
Or2WinGetConsoleFontSize(
    PSZ     FuncName,
    HANDLE hConsoleOutput,
    DWORD nFont
    );

DWORD
Or2WinGetFileType(
    PSZ     FuncName,
    HANDLE hFile
    );

DWORD
Or2WinGetFullPathNameA(
    PSZ     FuncName,
    LPCSTR lpFileName,
    DWORD nBufferLength,
    LPSTR lpBuffer,
    LPSTR *lpFilePart
    );

HANDLE
Or2WinGetModuleHandleA(
    PSZ     FuncName,
    LPCSTR lpModuleName
    );

HANDLE
Or2WinGetStdHandle(
    PSZ     FuncName,
    DWORD nStdHandle
    );

UINT
Or2WinGetSystemDirectoryA(
    PSZ     FuncName,
    LPSTR lpBuffer,
    UINT uSize
    );

VOID
Or2WinInitializeCriticalSection(
    PSZ     FuncName,
    LPCRITICAL_SECTION lpCriticalSection
    );

VOID
Or2WinLeaveCriticalSection(
    PSZ     FuncName,
    LPCRITICAL_SECTION lpCriticalSection
    );

int
Or2WinLoadStringA(
    PSZ     FuncName,
    HINSTANCE hInstance,
    UINT uID,
    LPSTR lpBuffer,
    int nBufferMax
    );

int
Or2WinMessageBoxA(
    PSZ     FuncName,
    HWND hWnd ,
    LPCSTR lpText,
    LPCSTR lpCaption ,
    UINT uType
    );

HANDLE
Or2WinOpenProcess(
    PSZ     FuncName,
    DWORD dwDesiredAccess,
    BOOL bInheritHandle,
    DWORD dwProcessId
    );

DWORD
Or2WinResumeThread(
    PSZ     FuncName,
    HANDLE hThread
    );

UINT
Or2WinSetErrorMode(
    PSZ     FuncName,
    UINT uMode
    );

BOOL
Or2WinSetEvent(
    PSZ     FuncName,
    HANDLE hEvent
    );

BOOL
Or2WinSetStdHandle(
    PSZ     FuncName,
    DWORD nStdHandle,
    HANDLE hHandle
    );

LCID
Or2WinGetThreadLocale(
    PSZ     FuncName
    );

BOOL
Or2WinSetThreadLocale(
    PSZ     FuncName,
    LCID    Locale
    );

BOOL
Or2WinSetThreadPriority(
    PSZ     FuncName,
    HANDLE hThread,
    int nPriority
    );

BOOL
Or2WinSystemParametersInfoA(
    PSZ     FuncName,
    UINT uiAction,
    UINT uiParam,
    PVOID pvParam,
    UINT fWinIni
    );

BOOL
Or2WinTerminateThread(
    PSZ     FuncName,
    HANDLE hThread,
    DWORD dwExitCode
    );

BOOL
Or2WinVerifyConsoleIoHandle(
    PSZ     FuncName,
    HANDLE hIoHandle
    );

DWORD
Or2WinWaitForSingleObject(
    PSZ     FuncName,
    HANDLE hHandle,
    DWORD dwMilliseconds
    );

BOOL
Or2WinWriteFile(
    PSZ     FuncName,
    HANDLE hFile,
    CONST VOID *lpBuffer,
    DWORD nNumberOfBytesToWrite,
    LPDWORD lpNumberOfBytesWritten,
    LPOVERLAPPED lpOverlapped
    );

int
Or2Win_read(
    PSZ     FuncName,
    int  hFile,
    void *Buffer,
    unsigned int Length
    );

BOOL
Or2WinReadFile(
    PSZ     FuncName,
    HANDLE hFile,
    LPVOID lpBuffer,
    DWORD nNumberOfBytesToRead,
    LPDWORD lpNumberOfBytesRead,
    LPOVERLAPPED lpOverlapped
    );

BOOL
Or2WinIsValidCodePage(
    PSZ     FuncName,
    UINT  CodePage
    );

UINT
Or2WinGetACP(
    PSZ     FuncName
    );

UINT
Or2WinGetOEMCP(
    PSZ     FuncName
    );

BOOL
Or2WinGetCPInfo(
    PSZ     FuncName,
    UINT      CodePage,
    LPCPINFO  lpCPInfo
    );

BOOL
Or2WinIsDBCSLeadByte(
    PSZ     FuncName,
    BYTE  TestChar
    );

int
Or2WinMultiByteToWideChar(
    PSZ     FuncName,
    UINT    CodePage,
    DWORD   dwFlags,
    LPCSTR  lpMultiByteStr,
    int     cchMultiByte,
    LPWSTR  lpWideCharStr,
    int     cchWideChar
    );

int
Or2WinWideCharToMultiByte(
    PSZ     FuncName,
    UINT     CodePage,
    DWORD    dwFlags,
    LPCWSTR  lpWideCharStr,
    int      cchWideChar,
    LPSTR    lpMultiByteStr,
    int      cchMultiByte,
    LPSTR    lpDefaultChar,
    LPBOOL   lpUsedDefaultChar
    );

int
Or2WinCompareStringW(
    PSZ     FuncName,
    LCID     Locale,
    DWORD    dwCmpFlags,
    LPCWSTR  lpString1,
    int      cchCount1,
    LPCWSTR  lpString2,
    int      cchCount2
    );

int
Or2WinLCMapStringW(
    PSZ     FuncName,
    LCID     Locale,
    DWORD    dwMapFlags,
    LPCWSTR  lpSrcStr,
    int      cchSrc,
    LPWSTR   lpDestStr,
    int      cchDest
    );

int
Or2WinGetLocaleInfoW(
    PSZ     FuncName,
    LCID    Locale,
    LCTYPE  LCType,
    LPWSTR  lpLCData,
    int     cchData
    );

LANGID
Or2WinGetSystemDefaultLangID(
    PSZ     FuncName
    );

LANGID
Or2WinGetUserDefaultLangID(
    PSZ     FuncName
    );

LCID
Or2WinGetSystemDefaultLCID(
    PSZ     FuncName
    );

LCID
Or2WinGetUserDefaultLCID(
    PSZ     FuncName
    );

BOOL
Or2WinGetStringTypeW(
    PSZ     FuncName,
    DWORD    dwInfoType,
    LPCWSTR  lpSrcStr,
    int      cchSrc,
    LPWORD   lpCharType
    );

int
Or2WinFoldStringW(
    PSZ     FuncName,
    DWORD    dwMapFlags,
    LPCWSTR  lpSrcStr,
    int      cchSrc,
    LPWSTR   lpDestStr,
    int      cchDest
    );

HANDLE
Or2WinHeapCreate(
    PSZ     FuncName,
    DWORD flOptions,
    DWORD dwInitialSize,
    DWORD dwMaximumSize
    );

LPSTR
Or2WinHeapAlloc(
    PSZ     FuncName,
    HANDLE hHeap,
    DWORD dwFlags,
    DWORD dwBytes
    );

BOOL
Or2WinHeapFree(
    PSZ     FuncName,
    HANDLE hHeap,
    DWORD dwFlags,
    LPSTR lpMem
    );

#else
#define Or2WinPeekConsoleInputA PeekConsoleInputA
#define Or2WinReadConsoleInputA ReadConsoleInputA
#define Or2WinWriteConsoleInputA WriteConsoleInputA
#define Or2WinReadConsoleOutputCharacterA ReadConsoleOutputCharacterA
#define Or2WinReadConsoleOutputCharacterW ReadConsoleOutputCharacterW
#define Or2WinReadConsoleOutputAttribute ReadConsoleOutputAttribute
#define Or2WinWriteConsoleOutputCharacterA WriteConsoleOutputCharacterA
#define Or2WinWriteConsoleOutputCharacterW WriteConsoleOutputCharacterW
#define Or2WinWriteConsoleOutputAttribute WriteConsoleOutputAttribute
#define Or2WinFillConsoleOutputCharacterA FillConsoleOutputCharacterA
#define Or2WinFillConsoleOutputAttribute FillConsoleOutputAttribute
#define Or2WinGetConsoleMode GetConsoleMode
#define Or2WinGetNumberOfConsoleInputEvents GetNumberOfConsoleInputEvents
#define Or2WinGetConsoleScreenBufferInfo GetConsoleScreenBufferInfo
#define Or2WinGetLargestConsoleWindowSize GetLargestConsoleWindowSize
#define Or2WinGetConsoleCursorInfo GetConsoleCursorInfo
#define Or2WinGetNumberOfConsoleMouseButtons GetNumberOfConsoleMouseButtons
#define Or2WinSetConsoleMode SetConsoleMode
#define Or2WinSetConsoleActiveScreenBuffer SetConsoleActiveScreenBuffer
#define Or2WinSetConsoleScreenBufferSize SetConsoleScreenBufferSize
#define Or2WinSetConsoleCursorPosition SetConsoleCursorPosition
#define Or2WinSetConsoleCursorInfo SetConsoleCursorInfo
#define Or2WinScrollConsoleScreenBufferA ScrollConsoleScreenBufferA
#define Or2WinScrollConsoleScreenBufferW ScrollConsoleScreenBufferW
#define Or2WinSetConsoleWindowInfo SetConsoleWindowInfo
#define Or2WinSetConsoleTextAttribute SetConsoleTextAttribute
#define Or2WinSetConsoleCtrlHandler SetConsoleCtrlHandler
#define Or2WinGetConsoleTitleW GetConsoleTitleW
#define Or2WinSetConsoleTitleA SetConsoleTitleA
#define Or2WinSetConsoleTitleW SetConsoleTitleW
#define Or2WinWriteConsoleA WriteConsoleA
#define Or2WinCreateConsoleScreenBuffer CreateConsoleScreenBuffer
#define Or2WinGetConsoleCP GetConsoleCP
#define Or2WinSetConsoleCP SetConsoleCP
#define Or2WinGetConsoleOutputCP GetConsoleOutputCP
#define Or2WinSetConsoleOutputCP SetConsoleOutputCP
#define Or2WinBeep Beep
#define Or2WinCloseHandle CloseHandle
#define Or2WinCreateEventW CreateEventW
#define Or2WinCreateFileA CreateFileA
#define Or2WinCreateFileW CreateFileW
#define Or2WinCreateProcessA CreateProcessA
#define Or2WinCreateThread CreateThread
#define Or2WinDuplicateHandle DuplicateHandle
#define Or2WinEnterCriticalSection EnterCriticalSection
#define Or2WinGetCommandLineA GetCommandLineA
#define Or2WinGetConsoleFontSize GetConsoleFontSize
#define Or2WinGetCurrentConsoleFont GetCurrentConsoleFont
#define Or2WinGetFileType GetFileType
#define Or2WinGetFullPathNameA GetFullPathNameA
#define Or2WinGetModuleHandleA GetModuleHandleA
#define Or2WinGetStdHandle GetStdHandle
#define Or2WinGetSystemDirectoryA GetSystemDirectoryA
#define Or2WinInitializeCriticalSection InitializeCriticalSection
#define Or2WinLeaveCriticalSection LeaveCriticalSection
#define Or2WinLoadStringA LoadStringA
#define Or2WinMessageBoxA MessageBoxA
#define Or2WinOpenProcess OpenProcess
#define Or2WinResumeThread ResumeThread
#define Or2WinSetErrorMode SetErrorMode
#define Or2WinSetEvent SetEvent
#define Or2WinSetStdHandle SetStdHandle
#define Or2WinGetThreadLocale GetThreadLocale
#define Or2WinSetThreadLocale SetThreadLocale
#define Or2WinSetThreadPriority SetThreadPriority
#define Or2WinSystemParametersInfoA SystemParametersInfoA
#define Or2WinTerminateThread TerminateThread
#define Or2WinVerifyConsoleIoHandle VerifyConsoleIoHandle
#define Or2WinWaitForSingleObject WaitForSingleObject
#define Or2WinWriteFile WriteFile
#define Or2Win_read _read
#define Or2WinReadFile ReadFile
#define Or2WinIsValidCodePage IsValidCodePage
#define Or2WinGetACP GetACP
#define Or2WinGetOEMCP GetOEMCP
#define Or2WinGetCPInfo GetCPInfo
#define Or2WinIsDBCSLeadByte IsDBCSLeadByte
#define Or2WinMultiByteToWideChar MultiByteToWideChar
#define Or2WinWideCharToMultiByte WideCharToMultiByte
#define Or2WinCompareStringW CompareStringW
#define Or2WinLCMapStringW LCMapStringW
#define Or2WinGetLocaleInfoW GetLocaleInfoW
#define Or2WinGetSystemDefaultLangID GetSystemDefaultLangID
#define Or2WinGetUserDefaultLangID GetUserDefaultLangID
#define Or2WinGetSystemDefaultLCID GetSystemDefaultLCID
#define Or2WinGetUserDefaultLCID GetUserDefaultLCID
#define Or2WinGetStringTypeW GetStringTypeW
#define Or2WinFoldStringW FoldStringW
#define Or2WinHeapCreate HeapCreate
#define Or2WinHeapAlloc HeapAlloc
#define Or2WinHeapFree HeapFree
#endif