|
|
1.1.1.4 root 1: /* The source code contained in this file has been derived from the source code
2: of Encryption for the Masses 2.02a by Paul Le Roux. Modifications and
3: additions to that source code contained in this file are Copyright (c) 2004
1.1.1.6 root 4: TrueCrypt Foundation and Copyright (c) 2004 TrueCrypt Team. Unmodified
1.1.1.4 root 5: parts are Copyright (c) 1998-99 Paul Le Roux. This is a TrueCrypt Foundation
6: release. Please see the file license.txt for full license details. */
1.1 root 7:
8: // Version displayed to user
1.1.1.7 ! root 9: #define VERSION_STRING "3.1"
1.1 root 10:
11: // Version number to compare against driver
1.1.1.7 ! root 12: #define VERSION_NUM 0x0310
1.1 root 13:
14: // Version number written to volume header during format,
15: // specifies the minimum program version required to mount the volume
1.1.1.6 root 16: #define VOL_REQ_PROG_VERSION 0x0100
17:
18: // Volume header version
19: #define VOLUME_HEADER_VERSION 0x0002
1.1 root 20:
21: #define TC_MAX_PATH 260 /* Includes the null terminator */
22: #define SECTOR_SIZE 512 /* sector size */
23:
1.1.1.6 root 24: #define BYTES_PER_KB 1024I64
25: #define BYTES_PER_MB 1048576I64
26: #define BYTES_PER_GB 1073741824I64
27: #define BYTES_PER_TB 1099511627776I64
28: #define BYTES_PER_PB 1125899906842624I64
1.1 root 29:
30: /* GUI/driver errors */
31:
32: #define ERR_OS_ERROR 1
33: #define ERR_OUTOFMEMORY 2
34: #define ERR_PASSWORD_WRONG 3
35: #define ERR_VOL_FORMAT_BAD 4
36: #define ERR_BAD_DRIVE_LETTER 5
37: #define ERR_DRIVE_NOT_FOUND 6
38: #define ERR_FILES_OPEN 7
39: #define ERR_VOL_SIZE_WRONG 8
40: #define ERR_COMPRESSION_NOT_SUPPORTED 9
41: #define ERR_PASSWORD_CHANGE_VOL_TYPE 10
42: #define ERR_PASSWORD_CHANGE_VOL_VERSION 11
43: #define ERR_VOL_SEEKING 12
44: #define ERR_VOL_WRITING 13
45: #define ERR_FILES_OPEN_LOCK 14
46: #define ERR_VOL_READING 15
47: #define ERR_DRIVER_VERSION 16
48: #define ERR_NEW_VERSION_REQUIRED 17
49:
50: #define ERR_VOL_ALREADY_MOUNTED 32
51: #define ERR_NO_FREE_SLOTS 33
52: #define ERR_NO_FREE_DRIVES 34
53: #define ERR_FILE_OPEN_FAILED 35
54: #define ERR_VOL_MOUNT_FAILED 36
55: #define ERR_INVALID_DEVICE 37
56: #define ERR_ACCESS_DENIED 38
57:
1.1.1.7 ! root 58: #define ERR_DONT_REPORT 100
! 59:
1.1 root 60: #define MIN_VOLUME_SIZE 19456
1.1.1.6 root 61: #define MIN_HIDDEN_VOLUME_HOST_SIZE ( MIN_VOLUME_SIZE * 2 + HIDDEN_VOL_HEADER_OFFSET + HEADER_SIZE )
1.1 root 62: #define MAX_VOLUME_SIZE 0x7fffFFFFffffFFFFI64
1.1.1.6 root 63: #define MAX_FAT_VOLUME_SIZE 0xFFFFFFFE00I64 // Should be possible to increase up to 0x1FFFFFFFC00I64 (untested)
64: #define MAX_HIDDEN_VOLUME_HOST_SIZE MAX_FAT_VOLUME_SIZE
65: #define MAX_HIDDEN_VOLUME_SIZE ( MAX_HIDDEN_VOLUME_HOST_SIZE - HIDDEN_VOL_HEADER_OFFSET - HEADER_SIZE )
1.1 root 66:
67: #define burn(mem,size) \
68: memset(mem,0xff,size); \
69: memset(mem,0,size);
70:
71: #define WIDE(x) (LPWSTR)L##x
72:
73: #include <string.h>
74:
75: #pragma intrinsic(memcmp, memcpy, memset, strcat, strcmp, strcpy, strlen)
76:
77: #ifdef NT4_DRIVER
78:
79: #pragma warning( disable : 4201 )
80: #pragma warning( disable : 4214 )
81: #pragma warning( disable : 4115 )
82: #pragma warning( disable : 4100 )
83: #pragma warning( disable : 4101 )
84: #pragma warning( disable : 4057 )
85: #pragma warning( disable : 4244 )
86: #pragma warning( disable : 4514 )
87: #pragma warning( disable : 4127 )
88:
89:
90: #include <ntddk.h> /* Standard header file for nt drivers */
91: #undef _WIN32_WINNT
92: #define _WIN32_WINNT 0x0501
93: #include <ntdddisk.h> /* Standard I/O control codes */
94: #include <ntiologc.h>
95:
96: #pragma warning( default : 4201 )
97: #pragma warning( default : 4214 )
98: #pragma warning( default : 4115 )
99: #pragma warning( default : 4100 )
100: #pragma warning( default : 4101 )
101: #pragma warning( default : 4057 )
102: #pragma warning( default : 4244 )
103: #pragma warning( default : 4127 )
104:
105: /* #pragma warning( default : 4514 ) this warning remains disabled */
106:
107: #define TCalloc(size) ((void *) ExAllocatePoolWithTag( NonPagedPool, size, 'MMCT' ))
108: #define TCfree(memblock) ExFreePoolWithTag( memblock, 'MMCT' )
109:
110: #define DEVICE_DRIVER
111:
112: #endif /* NT4_DRIVER */
113:
114:
115: #ifdef WIN9X_DRIVER
116:
117: #pragma warning( disable : 4047 )
118:
119: #include "iosdcls.inc" /* VMM and IOS headers */
120:
121: #pragma warning( default : 4047 )
122:
123: #include <vwin32.h>
124: #include <winerror.h>
125: #undef WANTVDXWRAPS
126: #pragma warning( disable : 4229 )
127: #include <shell.h>
128: #pragma warning( default : 4229 )
129: #pragma hdrstop
130: #include <malloc.h>
131: #include <vmm.h>
132: #include "ifs.h"
133: #include <dbt.h>
134: #define MBYTE16 3967
135: #define UWORD unsigned short
136: #define UBYTE unsigned char
137:
138: #define MBYTE16 3967
139:
140: #define TCalloc(size) _PageAllocate(size % 4096 ? (size/4096)+1 : size/4096,\
141: PG_SYS,0,0,0,MBYTE16,NULL,PAGEZEROINIT|PAGEFIXED|PAGECONTIG|PAGEUSEALIGN);
142:
143: #define TCfree(memblock) _PageFree(memblock,0)
144:
145: #define DEVICE_DRIVER
146:
147: #endif /* WIN9X_DRIVER */
148:
149: #ifdef DEVICE_DRIVER
150:
151: #ifndef BOOL
152: typedef int BOOL;
153: #endif
154:
155: #ifndef TRUE
156: #define TRUE 1
157: #endif
158:
159: #ifndef FALSE
160: #define FALSE !TRUE
161: #endif
162:
163: /* Define dummies for the drivers */
164: typedef int HFILE;
165: typedef unsigned int WPARAM;
166: typedef unsigned long LPARAM;
167: #define CALLBACK
168:
169: #ifndef UINT
170: typedef unsigned int UINT;
171: #endif
172:
173: #ifndef LRESULT
174: typedef unsigned long LRESULT;
175: #endif
176:
1.1.1.6 root 177: #else // #ifdef DEVICE_DRIVER
1.1 root 178:
179: #define TCalloc malloc
180: #define TCfree free
181:
182: #pragma warning( disable : 4201 )
183: #pragma warning( disable : 4214 )
184: #pragma warning( disable : 4115 )
185: #pragma warning( disable : 4514 )
186:
187: #undef _WIN32_WINNT
188: #define _WIN32_WINNT 0x0501
189: #include <windows.h> /* Windows header */
190: #include <commctrl.h> /* The common controls */
191: #include <process.h> /* Process control */
192: #include <winioctl.h>
193: #include <stdio.h> /* For sprintf */
194:
195: #pragma warning( default : 4201 )
196: #pragma warning( default : 4214 )
197: #pragma warning( default : 4115 )
198:
199: /* #pragma warning( default : 4514 ) this warning remains disabled */
200:
201: /* This is needed to fix a bug with VC 5, the TCHAR macro _ttoi64 maps
202: incorrectly to atoi64 when it should be _atoi64 */
203: #define atoi64 _atoi64
204:
205: #endif /* DEVICE_DRIVER */
206:
207: typedef UINT (_stdcall * diskio_f) (int, void *, UINT);
208:
209: #pragma hdrstop
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.