|
|
1.1.1.2 ! root 1: /* Copyright (C) 2004 TrueCrypt Foundation 1.1 root 2: This product uses components written by Paul Le Roux <[email protected]> */ 3: 4: /* DeviceIoControl values. 5: 6: */ 7: 8: #ifndef CTL_CODE 9: 10: /* A macro from the NT DDK */ 11: 12: #define CTL_CODE( DeviceType, Function, Method, Access ) ( \ 13: ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \ 14: ) 15: 16: #endif 17: 18: /* More macros from the NT DDK */ 19: 20: #ifndef METHOD_BUFFERED 21: #define METHOD_BUFFERED 0 22: #endif 23: 24: #ifndef FILE_ANY_ACCESS 25: #define FILE_ANY_ACCESS 0 26: #endif 27: 28: #ifndef FILE_DEVICE_DISK 29: #define FILE_DEVICE_DISK 0x00000007 30: #endif 31: 32: #ifndef IOCTL_DISK_BASE 33: #define IOCTL_DISK_BASE FILE_DEVICE_DISK 34: #endif 35: 36: /* These values originate from the following NT DDK macro : 37: 38: #define ANYNAME CTL_CODE(IOCTL_DISK_BASE, 0x800, METHOD_BUFFERED, \ 39: FILE_ANY_ACCESS) 40: 41: #define ANYNAME2 CTL_CODE(IOCTL_DISK_BASE, 0x801, METHOD_BUFFERED, \ 42: FILE_ANY_ACCESS) 43: 44: etc... */ 45: 46: /* Public driver interface codes */ 47: 48: #define MOUNT 466944 /* Mount a volume or partition */ 49: #define MOUNT_LIST 466948 /* Return list of mounted volumes */ 50: #define OPEN_TEST 466952 /* Open a file at ring0 */ 51: #define UNMOUNT 466956 /* Unmount a volume */ 52: #define WIPE_CACHE 466960 /* Wipe the driver password cache */ 53: #define HALT_SYSTEM 466964 /* Halt system; (only NT when compiled with debug) */ 54: #define DRIVER_VERSION 466968 /* Current driver version */ 55: #define RELEASE_TIME_SLICE 466972 /* Release time slice on apps behalf (only Win9x) */ 56: #define MOUNT_LIST_N 466976 /* Get volume info from the device (only Win9x) */ 57: #define DISKIO 466980 /* Read/Write at ring0 for win32 gui (only Win9x) */ 58: #define ALLOW_FAST_SHUTDOWN 466984 /* Fast shutdown under win98 (only Win9x) */ 59: #define CACHE_STATUS 466988 /* Get password cache status */ 60: #define VOLUME_PROPERTIES 466992 /* Get mounted volume properties */ 61: 62: #define UNMOUNT_PENDING 475112 /* Flush the device with this api 63: before sending UNMOUNT */ 64: 65: #define TC_FIRST_PRIVATE MOUNT /* First private control code */ 66: #define TC_LAST_PRIVATE UNMOUNT_PENDING /* Last private control code */ 67: 68: /* Start of driver interface structures, the size of these structures may 69: change between versions; so make sure you first send DRIVER_VERSION to 70: check that it's the correct device driver */ 71: 72: #pragma pack (push) 73: #pragma pack(1) 74: 75: typedef struct 76: { 77: int nReturnCode; /* Return code back from driver */ 78: short wszVolume[TC_MAX_PATH]; /* Volume to be mounted */ 79: char szPassword[MAX_PASSWORD + 1]; /* User password or SHA1 hash */ 80: int nPasswordLen; /* User password length */ 81: BOOL bCache; /* Cache passwords in driver */ 82: int nDosDriveNo; /* Drive number to mount */ 83: long time; /* Time when this volume was mounted */ 84: } MOUNT_STRUCT; 85: 86: typedef struct 87: { 88: int nReturnCode; /* Return code back from driver */ 89: int nDosDriveNo; /* Drive letter to unmount */ 90: } UNMOUNT_STRUCT; 91: 92: typedef struct 93: { 94: unsigned long ulMountedDrives; /* Bitfield of all mounted drive letters */ 95: short wszVolume[26][64]; /* Volume names of mounted volumes */ 96: unsigned __int64 diskLength[26]; 97: int cipher[26]; 98: } MOUNT_LIST_STRUCT; 99: 100: typedef struct 101: { 102: int driveNo; 103: short wszVolume[64]; 104: unsigned __int64 diskLength; 105: int cipher; 106: int pkcs5; 107: int pkcs5Iterations; 108: unsigned __int64 volumeCreationTime; 109: unsigned __int64 headerCreationTime; 110: //int readOnly; 111: } VOLUME_PROPERTIES_STRUCT; 112: 113: typedef struct 114: { 115: short wszFileName[TC_MAX_PATH]; /* Volume to be "open tested" */ 116: int nReturnCode; /* Win9x only */ 117: unsigned long secstart; /* Win9x only */ 118: unsigned long seclast; /* Win9x only */ 119: unsigned long device; /* Win9x only */ 120: } OPEN_TEST_STRUCT; 121: 122: /* Win9x only */ 123: typedef struct 124: { 125: int nReturnCode; /* Return code back from driver */ 126: int nDosDriveNo; /* Drive letter to get info on */ 127: short wszVolume[TC_MAX_PATH]; /* Volume names of mounted volumes */ 128: unsigned long mountfilehandle; /* Device file handle or 0 */ 129: } MOUNT_LIST_N_STRUCT; 130: 131: /* Win9x only */ 132: typedef struct 133: { 134: unsigned int devicenum; /* Ptr to dcb for device */ 135: unsigned int sectorstart; /* Start sector */ 136: unsigned int sectorlen; /* Number of sectors */ 137: char *bufferad; /* Address of buffer */ 138: int mode; /* Read=0 or Write=1 */ 139: int nReturnCode; /* Return code back from driver */ 140: } DISKIO_STRUCT; 141: 142: 143: #pragma pack (pop) 144: 145: #ifdef NT4_DRIVER 146: #define DRIVER_STR WIDE 147: #else 148: #define DRIVER_STR 149: #endif 150: 151: /* NT only */ 152: 153: #define TC_UNIQUE_ID_PREFIX "TrueCrypt" 154: #define TC_MOUNT_PREFIX L"\\Device\\TrueCryptVolume" 155: 156: #define NT_MOUNT_PREFIX DRIVER_STR("\\Device\\TrueCryptVolume") 157: #define NT_ROOT_PREFIX DRIVER_STR("\\Device\\TrueCrypt") 158: #define DOS_MOUNT_PREFIX DRIVER_STR("\\DosDevices\\") 159: #define DOS_ROOT_PREFIX DRIVER_STR("\\DosDevices\\TrueCrypt") 160: #define WIN32_ROOT_PREFIX DRIVER_STR("\\\\.\\TrueCrypt") 161: 162: /* Win9x only */ 163: 164: #define WIN9X_DRIVER_NAME "\\\\.\\TRUCRYPT"
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.