Поделиться через


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

Процесс узла драйвера UMDF выполняется в контексте учетной записи локальной службы. Драйверу может потребоваться доступ к другим устройствам или компонентам, которые не разрешают универсальный доступ к учетной записи локальной службы.

Начиная с Windows 8 операционная система включает идентификатор безопасности (SID), который идентифицирует драйверы UMDF. Включив этот идентификатор безопасности в требования к безопасности устройств, устройства или компоненты могут разрешить доступ к драйверам UMDF, а также запретить доступ к другим запросам из учетной записи локальной службы.

Идентификатор безопасности для драйверов UMDF SDDL_USER_MODE_DRIVERS, а определение находится в sddl.h. Полное представление этого идентификатора безопасности:

S-1-5-84-0-0-0-0-0

Сокращенное название этого идентификатора безопасности — UD. Это сокращение доступно начиная с Windows 8.

Драйвер, внешний для драйвера UMDF, может указать идентификатор безопасности либо в INF-файле, либо в драйвере перед созданием объекта устройства.

Указание безопасности устройства в INF-файле

В INF-файле можно использовать сокращенную форму или полностью указанную форму идентификатора безопасности.

Сокращенная форма доступна начиная с Windows 8:

HKR,,Security,,"D:P(A;;GA;;;BA)(A;;GA;;;SY)(A;;GA;;;UD)"   

В операционных системах, предшествующих Windows 8, необходимо использовать полностью указанную форму:

HKR,,Security,,"D:P(A;;GA;;;BA)(A;;GA;;;SY)(A;;GA;;;S-1-5-84-0-0-0-0-0)"       

Указание безопасности устройства в драйвере KMDF

Чтобы указать требования к безопасности в драйвере, необходимо использовать сокращенную форму, которая доступна только начиная с Windows 8. Например, драйвер KMDF может разрешить доступ к устройству из драйверов UMDF, используя следующее:

RtlInitUnicodeString(&sddlString, L"D:P(A;;GA;;;BA)(A;;GA;;;SY)(A;;GA;;;UD)");
status = WdfDeviceInitAssignSDDLString(DeviceInit, &sddlString);