1
 2#ifndef _NTNLS_
 3#define _NTNLS_
 4
 5#ifdef __cplusplus
 6extern "C" {
 7#endif
 8
 9#define MAXIMUM_LEADBYTES 12
10
11/* Some documentation can be found here: http://www.ping.uio.no/~ovehk/nls/ */
12typedef 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
28typedef 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