|
|
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.6 ! root 9: #define VERSION_STRING "3.0a"
1.1 root 10:
11: // Version number to compare against driver
1.1.1.6 ! root 12: #define VERSION_NUM 0x030a
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:
58: #define MIN_VOLUME_SIZE 19456
1.1.1.6 ! root 59: #define MIN_HIDDEN_VOLUME_HOST_SIZE ( MIN_VOLUME_SIZE * 2 + HIDDEN_VOL_HEADER_OFFSET + HEADER_SIZE )
1.1 root 60: #define MAX_VOLUME_SIZE 0x7fffFFFFffffFFFFI64
1.1.1.6 ! root 61: #define MAX_FAT_VOLUME_SIZE 0xFFFFFFFE00I64 // Should be possible to increase up to 0x1FFFFFFFC00I64 (untested)
! 62: #define MAX_HIDDEN_VOLUME_HOST_SIZE MAX_FAT_VOLUME_SIZE
! 63: #define MAX_HIDDEN_VOLUME_SIZE ( MAX_HIDDEN_VOLUME_HOST_SIZE - HIDDEN_VOL_HEADER_OFFSET - HEADER_SIZE )
1.1 root 64:
65: #define burn(mem,size) \
66: memset(mem,0xff,size); \
67: memset(mem,0,size);
68:
69: #define WIDE(x) (LPWSTR)L##x
70:
71: #include <string.h>
72:
73: #pragma intrinsic(memcmp, memcpy, memset, strcat, strcmp, strcpy, strlen)
74:
75: #ifdef NT4_DRIVER
76:
77: #pragma warning( disable : 4201 )
78: #pragma warning( disable : 4214 )
79: #pragma warning( disable : 4115 )
80: #pragma warning( disable : 4100 )
81: #pragma warning( disable : 4101 )
82: #pragma warning( disable : 4057 )
83: #pragma warning( disable : 4244 )
84: #pragma warning( disable : 4514 )
85: #pragma warning( disable : 4127 )
86:
87:
88: #include <ntddk.h> /* Standard header file for nt drivers */
89: #undef _WIN32_WINNT
90: #define _WIN32_WINNT 0x0501
91: #include <ntdddisk.h> /* Standard I/O control codes */
92: #include <ntiologc.h>
93:
94: #pragma warning( default : 4201 )
95: #pragma warning( default : 4214 )
96: #pragma warning( default : 4115 )
97: #pragma warning( default : 4100 )
98: #pragma warning( default : 4101 )
99: #pragma warning( default : 4057 )
100: #pragma warning( default : 4244 )
101: #pragma warning( default : 4127 )
102:
103: /* #pragma warning( default : 4514 ) this warning remains disabled */
104:
105: #define TCalloc(size) ((void *) ExAllocatePoolWithTag( NonPagedPool, size, 'MMCT' ))
106: #define TCfree(memblock) ExFreePoolWithTag( memblock, 'MMCT' )
107:
108: #define DEVICE_DRIVER
109:
110: #endif /* NT4_DRIVER */
111:
112:
113: #ifdef WIN9X_DRIVER
114:
115: #pragma warning( disable : 4047 )
116:
117: #include "iosdcls.inc" /* VMM and IOS headers */
118:
119: #pragma warning( default : 4047 )
120:
121: #include <vwin32.h>
122: #include <winerror.h>
123: #undef WANTVDXWRAPS
124: #pragma warning( disable : 4229 )
125: #include <shell.h>
126: #pragma warning( default : 4229 )
127: #pragma hdrstop
128: #include <malloc.h>
129: #include <vmm.h>
130: #include "ifs.h"
131: #include <dbt.h>
132: #define MBYTE16 3967
133: #define UWORD unsigned short
134: #define UBYTE unsigned char
135:
136: #define MBYTE16 3967
137:
138: #define TCalloc(size) _PageAllocate(size % 4096 ? (size/4096)+1 : size/4096,\
139: PG_SYS,0,0,0,MBYTE16,NULL,PAGEZEROINIT|PAGEFIXED|PAGECONTIG|PAGEUSEALIGN);
140:
141: #define TCfree(memblock) _PageFree(memblock,0)
142:
143: #define DEVICE_DRIVER
144:
145: #endif /* WIN9X_DRIVER */
146:
147: #ifdef DEVICE_DRIVER
148:
149: #ifndef BOOL
150: typedef int BOOL;
151: #endif
152:
153: #ifndef TRUE
154: #define TRUE 1
155: #endif
156:
157: #ifndef FALSE
158: #define FALSE !TRUE
159: #endif
160:
161: /* Define dummies for the drivers */
162: typedef int HFILE;
163: typedef unsigned int WPARAM;
164: typedef unsigned long LPARAM;
165: #define CALLBACK
166:
167: #ifndef UINT
168: typedef unsigned int UINT;
169: #endif
170:
171: #ifndef LRESULT
172: typedef unsigned long LRESULT;
173: #endif
174:
1.1.1.6 ! root 175: #else // #ifdef DEVICE_DRIVER
1.1 root 176:
177: #define TCalloc malloc
178: #define TCfree free
179:
180: #pragma warning( disable : 4201 )
181: #pragma warning( disable : 4214 )
182: #pragma warning( disable : 4115 )
183: #pragma warning( disable : 4514 )
184:
185: #undef _WIN32_WINNT
186: #define _WIN32_WINNT 0x0501
187: #include <windows.h> /* Windows header */
188: #include <commctrl.h> /* The common controls */
189: #include <process.h> /* Process control */
190: #include <winioctl.h>
191: #include <stdio.h> /* For sprintf */
192:
193: #pragma warning( default : 4201 )
194: #pragma warning( default : 4214 )
195: #pragma warning( default : 4115 )
196:
197: /* #pragma warning( default : 4514 ) this warning remains disabled */
198:
199: /* This is needed to fix a bug with VC 5, the TCHAR macro _ttoi64 maps
200: incorrectly to atoi64 when it should be _atoi64 */
201: #define atoi64 _atoi64
202:
203: #endif /* DEVICE_DRIVER */
204:
205: typedef UINT (_stdcall * diskio_f) (int, void *, UINT);
206:
207: #pragma hdrstop
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.