Управление доступом к устройствам (WDM)

Доступ к устройству контролируется дескриптором безопасности (и содержащимся в нем ACL). Дескриптор безопасности для объекта устройства можно указать при создании объекта устройства или задать в реестре.

Управление доступом устройств для драйверов WDM

Когда драйвер WDM (кроме определенных драйверов шины) создает объект устройства, диспетчер Plug and Play определяет дескриптор безопасности для устройства. Порядок операций выглядит следующим образом.

  1. Диспетчер PnP вызывает подпрограмму AddDevice драйвера.

  2. Подпрограмма AddDevice драйвера вызывает IoCreateDevice , чтобы создать объект устройства и присоединить его к стеку объектов устройства.

  3. Диспетчер PnP обновляет дескриптор безопасности для вновь созданного объекта устройства.

Для драйвера WDM диспетчер PnP определяет дескриптор безопасности для объекта устройства следующим образом.

  1. Если устройство имеет параметр дескриптора безопасности в реестре, он применяется к каждому объекту в стеке устройств.

  2. В противном случае, если класс установки устройства имеет параметр дескриптора безопасности в реестре, он применяется к каждому объекту в стеке устройств.

  3. В противном случае диспетчер PnP оставляет дескриптор безопасности по умолчанию для каждого объекта без изменений. В этом случае дескриптор безопасности по умолчанию для стека определяется типом устройства и характеристиками устройства PDO.

Для большинства типов и характеристик устройств дескриптор безопасности по умолчанию предоставляет полный доступ (GENERIC_ALL) администраторам, а также доступ на чтение, запись и выполнение (GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE) доступ ко всем остальным.

Дополнительные сведения о настройке дескриптора безопасности для устройства или класса настройки устройства в реестре см. в разделе Настройка свойств объекта устройства в реестре.

Если устройство работает в необработанном режиме, диспетчер PnP не может определить дескриптор безопасности для объекта устройства. В этом случае водитель автобуса должен предоставить дескриптор безопасности; см. ниже.

Управление доступом устройств для драйверов шины WDM

Драйвер шины WDM должен предоставить дескриптор безопасности для PDO каждого устройства, которое может работать в необработанном режиме. Используйте IoCreateDeviceSecure , чтобы создать объект устройства с дескриптором безопасности.

Если драйвер автобуса не работает с устройством в необработанном режиме, указывать дескриптор безопасности не требуется. Диспетчер PnP определяет дескриптор безопасности, как описано выше. Водитель автобуса может предоставить дескриптор безопасности, если он должен убедиться, что его PDO имеют более строгие параметры безопасности, чем дескриптор по умолчанию. Любой дескриптор, указанный драйвером шины, переопределяется параметрами в реестре.

Дополнительные сведения о создании объектов устройств см. в разделе Создание объекта устройства.

Управление доступом устройств для драйверов, отличных от WDM

Драйверы, не относящиеся к WDM, должны указывать дескриптор безопасности по умолчанию и GUID класса для всех создаваемых ими именованных объектов устройств.

Используйте подпрограмму IoCreateDeviceSecure , чтобы создать именованный объект устройства и указать дескриптор безопасности по умолчанию и GUID класса для этого устройства. Дескриптор безопасности указывается в подмножестве SDDL. Дополнительные сведения см. в разделе SDDL для объектов устройств.

Система переопределяет дескриптор безопасности по умолчанию любыми параметрами безопасности в реестре для указанного GUID класса. Драйвер должен указать собственный уникальный GUID для устройства. Используйте средство GuidGen для создания уникального GUID. (GuidGen включен в Microsoft Windows SDK.)