|
|
1.1 ! root 1: /*++ ! 2: ! 3: Copyright (c) 1993 Microsoft Corporation ! 4: ! 5: Module Name: ! 6: ! 7: ramdisk.h ! 8: ! 9: Abstract: ! 10: ! 11: This file includes data declarations for the Ram Disk driver for NT. ! 12: ! 13: Author: ! 14: ! 15: Robert Nelson (RobertN) 10-Mar-1993. ! 16: ! 17: Environment: ! 18: ! 19: Kernel mode only. ! 20: ! 21: Notes: ! 22: ! 23: Revision History: ! 24: ! 25: --*/ ! 26: ! 27: ! 28: #define DEFAULT_DISK_SIZE (1024*1024) // 1 MB ! 29: #define DEFAULT_ROOT_DIR_ENTRIES 512 ! 30: #define DEFAULT_SECTORS_PER_CLUSTER 2 ! 31: ! 32: typedef struct _RAM_DISK_EXTENSION { ! 33: PDEVICE_OBJECT DeviceObject; ! 34: PUCHAR DiskImage; ! 35: ULONG DiskLength; ! 36: ULONG NumberOfCylinders; ! 37: ULONG TracksPerCylinder; ! 38: ULONG SectorsPerTrack; ! 39: ULONG BytesPerSector; ! 40: UNICODE_STRING Win32NameString; ! 41: } RAMDISK_EXTENSION, *PRAMDISK_EXTENSION; ! 42: ! 43: #define RAMDISK_MEDIA_TYPE 0xF8 ! 44: #define DIR_ENTRIES_PER_SECTOR 16 ! 45: #define WIN32_PATH L"\\DosDevices\\" ! 46: ! 47: #if DBG ! 48: #define RAMDBUGCHECK ((ULONG)0x80000000) ! 49: #define RAMDDIAG1 ((ULONG)0x00000001) ! 50: #define RAMDDIAG2 ((ULONG)0x00000002) ! 51: #define RAMDERRORS ((ULONG)0x00000004) ! 52: ! 53: #define RamDiskDump(LEVEL, STRING) \ ! 54: do { \ ! 55: if (RamDiskDebugLevel & LEVEL) { \ ! 56: DbgPrint STRING; \ ! 57: } \ ! 58: if (LEVEL == RAMDBUGCHECK) { \ ! 59: ASSERT(FALSE); \ ! 60: } \ ! 61: } while (0) ! 62: #else ! 63: #define RamDiskDump(LEVEL,STRING) do {NOTHING;} while (0) ! 64: #endif ! 65: ! 66: #pragma pack(1) ! 67: ! 68: typedef struct _BOOT_SECTOR ! 69: { ! 70: UCHAR bsJump[3]; // x86 jmp instruction, checked by FS ! 71: CCHAR bsOemName[8]; // OEM name of formatter ! 72: USHORT bsBytesPerSec; // Bytes per Sector ! 73: UCHAR bsSecPerClus; // Sectors per Cluster ! 74: USHORT bsResSectors; // Reserved Sectors ! 75: UCHAR bsFATs; // Number of FATs - we always use 1 ! 76: USHORT bsRootDirEnts; // Number of Root Dir Entries ! 77: USHORT bsSectors; // Number of Sectors ! 78: UCHAR bsMedia; // Media type - we use RAMDISK_MEDIA_TYPE ! 79: USHORT bsFATsecs; // Number of FAT sectors ! 80: USHORT bsSecPerTrack; // Sectors per Track - we use 32 ! 81: USHORT bsHeads; // Number of Heads - we use 2 ! 82: ULONG bsHiddenSecs; // Hidden Sectors - we set to 0 ! 83: ULONG bsHugeSectors; // Number of Sectors if > 32 MB size ! 84: UCHAR bsDriveNumber; // Drive Number - not used ! 85: UCHAR bsReserved1; // Reserved ! 86: UCHAR bsBootSignature; // New Format Boot Signature - 0x29 ! 87: ULONG bsVolumeID; // VolumeID - set to 0x12345678 ! 88: CCHAR bsLabel[11]; // Label - set to RamDisk ! 89: CCHAR bsFileSystemType[8];// File System Type - FAT12 or FAT16 ! 90: CCHAR bsReserved2[448]; // Reserved ! 91: UCHAR bsSig2[2]; // Originial Boot Signature - 0x55, 0xAA ! 92: } BOOT_SECTOR, *PBOOT_SECTOR; ! 93: ! 94: typedef struct _DIR_ENTRY ! 95: { ! 96: UCHAR deName[8]; // File Name ! 97: UCHAR deExtension[3]; // File Extension ! 98: UCHAR deAttributes; // File Attributes ! 99: UCHAR deReserved; // Reserved ! 100: USHORT deTime; // File Time ! 101: USHORT deDate; // File Date ! 102: USHORT deStartCluster; // First Cluster of file ! 103: ULONG deFileSize; // File Length ! 104: } DIR_ENTRY, *PDIR_ENTRY; ! 105: ! 106: #pragma pack() ! 107: ! 108: // ! 109: // Directory Entry Attributes ! 110: // ! 111: ! 112: #define DIR_ATTR_READONLY 0x01 ! 113: #define DIR_ATTR_HIDDEN 0x02 ! 114: #define DIR_ATTR_SYSTEM 0x04 ! 115: #define DIR_ATTR_VOLUME 0x08 ! 116: #define DIR_ATTR_DIRECTORY 0x10 ! 117: #define DIR_ATTR_ARCHIVE 0x20 ! 118: ! 119: int ! 120: sprintf(char *s, const char *format, ...); ! 121: ! 122: // ! 123: // Device driver routine declarations. ! 124: // ! 125: ! 126: NTSTATUS ! 127: DriverEntry( ! 128: IN OUT PDRIVER_OBJECT DriverObject, ! 129: IN PUNICODE_STRING RegistryPath ! 130: ); ! 131: ! 132: NTSTATUS ! 133: RamDiskInitializeDisk( ! 134: IN PDRIVER_OBJECT DriverObject, ! 135: IN PUNICODE_STRING ParamPath ! 136: ); ! 137: ! 138: void ! 139: RamDiskFormatFat( ! 140: IN PRAMDISK_EXTENSION DiskExtension, ! 141: IN PUNICODE_STRING ParamPath ! 142: ); ! 143: ! 144: NTSTATUS ! 145: RamDiskCreateClose( ! 146: IN PDEVICE_OBJECT DeviceObject, ! 147: IN PIRP Irp ! 148: ); ! 149: ! 150: NTSTATUS ! 151: RamDiskDeviceControl( ! 152: IN PDEVICE_OBJECT DeviceObject, ! 153: IN PIRP Irp ! 154: ); ! 155: ! 156: NTSTATUS ! 157: RamDiskReadWrite( ! 158: IN PDEVICE_OBJECT DeviceObject, ! 159: IN PIRP Irp ! 160: ); ! 161: ! 162: VOID ! 163: RamDiskUnloadDriver( ! 164: IN PDRIVER_OBJECT DriverObject ! 165: );
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.