Annotation of truecrypt/driver/ntdriver.h, revision 1.1.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: /* This structure is used to start new threads */
                      5: typedef struct _THREAD_BLOCK_
                      6: {
                      7:        PDEVICE_OBJECT DeviceObject;
                      8:        NTSTATUS ntCreateStatus;
                      9:        WCHAR wszMountVolume[TC_MAX_PATH];
                     10:        MOUNT_STRUCT *mount;
                     11: } THREAD_BLOCK, *PTHREAD_BLOCK;
                     12: 
                     13: /* This structure is allocated for non-root devices! WARNING: bRootDevice
                     14:    must be the first member of the structure! */
                     15: typedef struct EXTENSION
                     16: {
                     17:        BOOL bRootDevice;       /* Is this the root device ? which the
                     18:                                   user-mode apps talk to */
                     19: 
                     20:        ULONG lMagicNumber;     /* To ensure the completion routine is not
                     21:                                   sending us bad IRP's */
                     22: 
                     23:        int nDosDriveNo;        /* Drive number this extension is mounted
                     24:                                   against */
                     25:        BOOL bShuttingDown;                     /* Is the driver shutting down ? */
                     26:        BOOL bThreadShouldQuit;         /* Instruct per device worker thread to quit */
                     27:        PETHREAD peThread;                      /* Thread handle */
                     28:        KEVENT keCreateEvent;           /* Device creation event */
                     29:        KSPIN_LOCK ListSpinLock;        /* IRP spinlock */
                     30:        LIST_ENTRY ListEntry;           /* IRP listentry */
                     31:        KSEMAPHORE RequestSemaphore;    /* IRP list request  Semaphore */
                     32: 
                     33: #ifdef USE_KERNEL_MUTEX
                     34:        KMUTEX KernelMutex;                     /* Sync. mutex for entire thread */
                     35: #endif
                     36: 
                     37:        HANDLE hDeviceFile;                     /* Device handle for this device */
                     38:        PFILE_OBJECT pfoDeviceFile;     /* Device fileobject for this device */
                     39:        PDEVICE_OBJECT pFsdDevice;      /* lower level device handle */
                     40: 
                     41:        CRYPTO_INFO *cryptoInfo;        /* Cryptographic information for this device */
                     42: 
                     43:        __int64 DiskLength;                     /* The length of the disk referred to by this device */  
                     44:        __int64 NumberOfCylinders;              /* Partition info */
                     45:        ULONG TracksPerCylinder;        /* Partition info */
                     46:        ULONG SectorsPerTrack;          /* Partition info */
                     47:        ULONG BytesPerSector;           /* Partition info */
                     48:        UCHAR PartitionType;            /* Partition info */
                     49: 
                     50:        KEVENT keVolumeEvent;           /* Event structure used when setting up a device */
                     51: 
                     52:        BOOL bReadOnly;         /* Is this device readonly ? */
                     53:        BOOL bRawDevice;        /* Is this a raw-partition or raw-floppy device ? */
                     54: 
                     55:        WCHAR wszVolume[64];    /* For the tree view in the user-mode
                     56:                                   application, here we only store 64
                     57:                                   characters rather than TC_MAX_PATH to try
                     58:                                   to keep this structures size down - DONT
                     59:                                   change this size without also changing
                     60:                                   MOUNT_LIST_STRUCT! */
                     61: 
                     62:        long mountTime;         /* The time this volume was last mounted, for
                     63:                                   the user-mode application */
                     64: 
                     65: } EXTENSION, *PEXTENSION;
                     66: 
                     67: /* Helper macro returning x seconds in units of 100 nanoseconds */
                     68: #define WAIT_SECONDS(x) (x*10000000)
                     69: 
                     70: /* In order to see any debug output you will need to run a checked build of
                     71:    NT */
                     72: #ifdef DEBUG
                     73: #define Dump DbgPrint
                     74: #else
                     75: #define Dump
                     76: #endif
                     77: 
                     78: /* Sync. mutex for entire driver */
                     79: extern KMUTEX driverMutex;
                     80: 
                     81: #ifdef USE_KERNEL_MUTEX
                     82: #pragma message ("Compiling " __FILE__ " with USE_KERNEL_MUTEX on")
                     83: #endif
                     84: 
                     85: /* Everything below this line is automatically updated by the -mkproto-tool- */
                     86: 
                     87: NTSTATUS DriverEntry (PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath);
                     88: NTSTATUS TCDispatchQueueIRP (PDEVICE_OBJECT DeviceObject, PIRP Irp);
                     89: NTSTATUS TCCreateRootDeviceObject (PDRIVER_OBJECT DriverObject);
                     90: NTSTATUS TCCreateDeviceObject (PDRIVER_OBJECT DriverObject, PDEVICE_OBJECT * ppDeviceObject, int nDosDriveNo);
                     91: NTSTATUS TCDeviceControl (PDEVICE_OBJECT DeviceObject, PEXTENSION Extension, PIRP Irp);
                     92: NTSTATUS TCStartThread (PDEVICE_OBJECT DeviceObject, PEXTENSION Extension, MOUNT_STRUCT * mount);
                     93: void TCStopThread (PDEVICE_OBJECT DeviceObject, PEXTENSION Extension);
                     94: VOID TCThreadIRP (PVOID Context);
                     95: void TCGetNTNameFromNumber (LPWSTR ntname, int nDriveNo);
                     96: void TCGetDosNameFromNumber (LPWSTR dosname, int nDriveNo);
                     97: LPWSTR TCTranslateCode (ULONG ulCode);
                     98: PDEVICE_OBJECT TCDeleteDeviceObject (PDEVICE_OBJECT DeviceObject, PEXTENSION Extension);
                     99: VOID TCUnloadDriver (PDRIVER_OBJECT DriverObject);

unix.superglobalmegacorp.com

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