Функции доступа к Системному Реестру, предоставляемые Диспетчером ввода/вывода
Функции доступа к Реестру, предоставляемые Диспетчером ввода/вывода, предоставляют доступ по указателю на объект устройства, либо по имени зарегистрированного интерфейса (аналог символьной ссылки). На практике, программисты выбирают в качестве имени интерфейса глобальный идентификатор GUID в строковом представлении (генерируется программой GuidGen).
Документация DDK рекомендует применять функции, предоставляемые для доступа к Реестру Диспетчером ввода/вывода, вместо функций прямого доступа — для облегчения переноса на другие процессорные платформы и в качестве защиты от изменений в структуре Реестра в будущем.
IoRegisterDeviceInterface регистрирует интерфейс устройства (аналог регистрации символьной ссылки), что делает возможным доступ к устройству из приложений пользовательского режима и других системных компонентов. Диспетчер ввода/вывода создает подраздел Реестра для зарегистрированного интерфейса. Драйвер может хранить в этом подразделе собственные параметры, получая доступ к нему вызовом IoOpenDeviceInterfaceRegistryKey.
IoGetDeviceProperty запрашивает из Системного Реестра установочную информацию об устройстве.
IoOpenDeviceInterfaceRegistryKey возвращает дескриптор доступа к подразделу реестра для зарегистрированного интерфейса устройства (способ регистрации устройства в системе при помощи вызова IoRegisterDeviceInterface, вместо символьной ссылки). Полученный таким образом дескриптор должен по окончании использования быть закрыт вызовом ZwClose.
IoOpenDeviceRegistryKey возвращает дескриптор доступа к подразделу Системного Реестра для драйвера или устройства по указателю на объект устройства. Полученный таким образом дескриптор должен по окончании использования быть закрыт вызовом ZwClose.
IoSetDeviceInterfaceState разрешает или запрещает доступ к зарегистрированному ранее интерфейсу устройства. Приложения пользовательского режима и другие компоненты системы могут получать доступ только к незапрещенным интерфейсам.