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

UptoLike

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

102
RegistryPathуказатель на строку, задающую точку входа в реестре,
отведенную для этого драйвера. Через реестр может осуществляться
конфигурирование драйвера.
Возвращаемое значение:
STATUS_SUCCESS если драйвер нормально инициализировался,
иначе код ошибки
{
NTSTATUS ntStatus;
UNICODE_STRING paramPath;
static WCHAR SubKeyString[] = L"\\Parameters";
Считывание параметров из реестра
Инициализация объекта драйвера и его точек входа. Соответствующим
элементам массива DriverObject->MajorFunction присваиваются адреса
поддерживаемых функций.
DriverObject->MajorFunction[IRP_MJ_CREATE] =
RamDiskCreateClose;
DriverObject->MajorFunction[IRP_MJ_CLOSE] =
RamDiskCreateClose;
DriverObject->MajorFunction[IRP_MJ_READ] = RamDiskReadWrite;
DriverObject->MajorFunction[IRP_MJ_WRITE] = RamDiskReadWrite;
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] =
RamDiskDeviceControl;
ntStatus = RamDiskInitializeDisk(DriverObject, &paramPath);
return ntStatus;
}
NTSTATUS
RamDiskInitializeDisk(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING ParamPath
)
       RegistryPath – указатель на строку, задающую точку входа в реестре,
отведенную для этого драйвера. Через реестр может осуществляться
конфигурирование драйвера.
       Возвращаемое значение:
       STATUS_SUCCESS если драйвер нормально инициализировался,
иначе код ошибки
{
    NTSTATUS             ntStatus;
    UNICODE_STRING       paramPath;
    static   WCHAR       SubKeyString[] = L"\\Parameters";


       … Считывание параметров из реестра


       …Инициализация объекта драйвера и его точек входа. Соответствующим
элементам      массива   DriverObject->MajorFunction   присваиваются   адреса
поддерживаемых функций.
    DriverObject->MajorFunction[IRP_MJ_CREATE]                             =
RamDiskCreateClose;
    DriverObject->MajorFunction[IRP_MJ_CLOSE]                              =
RamDiskCreateClose;
    DriverObject->MajorFunction[IRP_MJ_READ] = RamDiskReadWrite;
    DriverObject->MajorFunction[IRP_MJ_WRITE] = RamDiskReadWrite;
    DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL]                     =
    RamDiskDeviceControl;


    ntStatus = RamDiskInitializeDisk(DriverObject, ¶mPath);
       …
    return ntStatus;
}

NTSTATUS
RamDiskInitializeDisk(
IN PDRIVER_OBJECT   DriverObject,
IN PUNICODE_STRING ParamPath
)


                                      102