1 
2 #ifndef _NTNLS_
3 #define _NTNLS_
4 
5 #ifdef __cplusplus
6 extern "C" {
7 #endif
8 
9 #define MAXIMUM_LEADBYTES 12
10 
11 /* Some documentation can be found here: http://www.ping.uio.no/~ovehk/nls/ */
12 typedef struct _CPTABLEINFO
13 {
14    USHORT  CodePage;
15    USHORT  MaximumCharacterSize;       /* 1 = SBCS, 2 = DBCS */
16    USHORT  DefaultChar;                /* Default MultiByte Character for the CP->Unicode conversion */
17    USHORT  UniDefaultChar;             /* Default Unicode Character for the CP->Unicode conversion */
18    USHORT  TransDefaultChar;           /* Default MultiByte Character for the Unicode->CP conversion */
19    USHORT  TransUniDefaultChar;        /* Default Unicode Character for the Unicode->CP conversion */
20    USHORT  DBCSCodePage;
21    UCHAR LeadByte[MAXIMUM_LEADBYTES];
22    PUSHORT MultiByteTable;             /* Table for CP->Unicode conversion */
23    PVOID WideCharTable;                /* Table for Unicode->CP conversion */
24    PUSHORT DBCSRanges;
25    PUSHORT DBCSOffsets;
26 } CPTABLEINFO, *PCPTABLEINFO;
27 
28 typedef struct _NLSTABLEINFO
29 {
30    CPTABLEINFO OemTableInfo;
31    CPTABLEINFO AnsiTableInfo;
32    PUSHORT UpperCaseTable;
33    PUSHORT LowerCaseTable;
34 } NLSTABLEINFO, *PNLSTABLEINFO;
35 
36 #ifdef __cplusplus
37 }
38 #endif
39 
40 #endif /* _NTNLS_ */
41 
42