Управление доступом к устройствам
Процесс узла драйвера 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);