ВУЗ:
Составители:
32
servkey.Buffer[RegistryPath->Length/sizeof(WCHAR)] = 0;
return STATUS_SUCCESS; //5
}
1. Инициализация указателей на две функции, которые могут находиться в
любом месте драйвера. Имена функций могут быть любыми другими, однако
целесообразно давать им осмысленные имена (DriverUnload и AddDevice).
2. Каждый WDM-драйвер обязан обрабатывать два запроса ввода вывода
диспетчера PnP_POWER и SYSTEM_CONTROL. В этом месте назначаются
диспетчерские функции для обработки этих запросов
. Их имена также могут
быть любыми другими.
3. На месте многоточия должны формироваться указатели на другие
диспетчерские функции, которые должен обрабатывать драйвер.
4. Здесь создается копия RegistryPath на случай, если из драйвера придется
обращаться к соответствующему разделу реестра. Здесь имеется в виду, что
переменная с именем servkey типа UnicodeString уже
была где-то объявлена.
5. Здесь возвращается код STATUS_SUCCESS (который, как всегда имеет
значение 0), что означает успешное завершение функции. Если в (4) не удалось
отвести память для копирования RegistryPath, возвращается код
STATUS_INSUFFICIENT_RESOURCES (недостаточно ресурсов). Коды для
неполадок различного типа содержатся в стандартном наборе.
2.4 Функция DriverUnload
Функция WDM-драйвера DriverUnload «убирает мусор»
после начальной
инициализации драйвера функцией DriverEntry. В нашем случае она должна
освободить память, занимаемую копией RegistryPath.
VOID DriverUnload(PDRIVER_OBJECT DriverObject)
{
RtlFreeUnicodeString(&strvkey);
}
servkey.Buffer[RegistryPath->Length/sizeof(WCHAR)] = 0;
return STATUS_SUCCESS; //5
}
1. Инициализация указателей на две функции, которые могут находиться в
любом месте драйвера. Имена функций могут быть любыми другими, однако
целесообразно давать им осмысленные имена (DriverUnload и AddDevice).
2. Каждый WDM-драйвер обязан обрабатывать два запроса ввода вывода
диспетчера PnP_POWER и SYSTEM_CONTROL. В этом месте назначаются
диспетчерские функции для обработки этих запросов. Их имена также могут
быть любыми другими.
3. На месте многоточия должны формироваться указатели на другие
диспетчерские функции, которые должен обрабатывать драйвер.
4. Здесь создается копия RegistryPath на случай, если из драйвера придется
обращаться к соответствующему разделу реестра. Здесь имеется в виду, что
переменная с именем servkey типа UnicodeString уже была где-то объявлена.
5. Здесь возвращается код STATUS_SUCCESS (который, как всегда имеет
значение 0), что означает успешное завершение функции. Если в (4) не удалось
отвести память для копирования RegistryPath, возвращается код
STATUS_INSUFFICIENT_RESOURCES (недостаточно ресурсов). Коды для
неполадок различного типа содержатся в стандартном наборе.
2.4 Функция DriverUnload
Функция WDM-драйвера DriverUnload «убирает мусор» после начальной
инициализации драйвера функцией DriverEntry. В нашем случае она должна
освободить память, занимаемую копией RegistryPath.
VOID DriverUnload(PDRIVER_OBJECT DriverObject)
{
RtlFreeUnicodeString(&strvkey);
}
32
Страницы
- « первая
- ‹ предыдущая
- …
- 30
- 31
- 32
- 33
- 34
- …
- следующая ›
- последняя »
