Организация ввода-вывода. Часть 2. Драйверы для WINDOWS NT. Рощин А.В. - 103 стр.

UptoLike

Составители: 

103
RamDiskInitializeDisk вызывается во время инициализации функцией
DriverEntry().
Создает и инициализирует объект устройства для диска. Память для
образа выделяется в несвопируемой области. RamDiskFormatFat
вызывается для создания файловой системы FAT.
Два параметра могут быть заданы при помощи реестра:
DiskSize определяет размер виртуального диска в байтах. Если
система не может выделить достаточно памяти, возвращается
STATUS_INSUFFICIENT_RESOURCES. По умолчанию – 1 МБ.
DriveLetter используется для указания имени диска. Строка
должна быть буквой или буквой с двоеточием.
Аргументы:
DriverObjectуказатель на объект, представляющий этот драйвер.
ParamPathуказатель на подключ Parameters реестра.
Возвращаемое значение:
STATUS_SUCCESS если драйвер нормально инициализировался,
иначе код ошибки
{
STRING ntNameString; Имя устройства NT
"\Device\RamDisk"
UNICODE_STRING ntUnicodeString; Unicode версия ntNameString
UNICODE_STRING Win32PathString; Имя Win32 "\DosDevices\Z:"
PDEVICE_OBJECT deviceObject = NULL; Указатель на объект
устройства
PRAMDISK_EXTENSION diskExtension = NULL; Указатель на
специфические
данные устройства
NTSTATUS ntStatus;
ULONG defaultDiskSize = DEFAULT_DISK_SIZE;
ULONG diskSize = DEFAULT_DISK_SIZE;
UNICODE_STRING driveLetterString;
WCHAR driveLetterBuffer[sizeof(WCHAR) * 10];
      RamDiskInitializeDisk вызывается во время инициализации функцией
DriverEntry().
      Создает и инициализирует объект устройства для диска. Память для
образа   выделяется   в   несвопируемой     области.   RamDiskFormatFat
вызывается для создания файловой системы FAT.
      Два параметра могут быть заданы при помощи реестра:
      − DiskSize определяет размер виртуального диска в байтах. Если
         система не может выделить достаточно памяти, возвращается
         STATUS_INSUFFICIENT_RESOURCES. По умолчанию – 1 МБ.
      − DriveLetter используется для указания имени диска. Строка
         должна быть буквой или буквой с двоеточием.
      Аргументы:
      DriverObject – указатель на объект, представляющий этот драйвер.
      ParamPath – указатель на подключ Parameters реестра.
      Возвращаемое значение:
      STATUS_SUCCESS если драйвер нормально инициализировался,
иначе код ошибки
{
     STRING                ntNameString; Имя устройства NT
"\Device\RamDisk"
     UNICODE_STRING        ntUnicodeString; Unicode версия ntNameString
     UNICODE_STRING        Win32PathString; Имя Win32 "\DosDevices\Z:"

     PDEVICE_OBJECT        deviceObject = NULL; Указатель на объект
устройства
     PRAMDISK_EXTENSION    diskExtension = NULL; Указатель на
                                           специфические
                                                   данные устройства

    NTSTATUS               ntStatus;

    ULONG                  defaultDiskSize = DEFAULT_DISK_SIZE;
    ULONG                  diskSize = DEFAULT_DISK_SIZE;
    UNICODE_STRING         driveLetterString;
    WCHAR                  driveLetterBuffer[sizeof(WCHAR) * 10];




                                   103