Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Процесс хоста драйвера UMDF выполняется в контексте локальной учетной записи службы. Драйверу может потребоваться доступ к другим устройствам или компонентам, которые не разрешают общий доступ к локальной учетной записи службы.
Начиная с Windows 8 операционная система включает идентификатор безопасности (SID), определяющий драйверы UMDF. Включив этот идентификатор безопасности в требованиях к безопасности устройства, устройства или компоненты могут разрешить доступ к драйверам UMDF, предотвращая доступ к другим запросам из локальной учетной записи службы.
Идентификатор безопасности для драйверов UMDF является SDDL_USER_MODE_DRIVERS, и определение находится в sddl.h. Полное представление этого SID:
S-1-5-84-0-0-0-0-0
Сокращение для этого SID — UD. Это сокращение доступно начиная с Windows 8.
Драйвер, внешний по отношению к драйверу UMDF, имеет возможность указать идентификатор безопасности (SID) в файле 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);