Annotation of truecrypt/common/apidrvr.h, revision 1.1

1.1     ! root        1: /* Copyright (C) 2004 TrueCrypt Team, truecrypt.org
        !             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"

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.