控制设备访问权限
UMDF 驱动程序主机进程在本地服务帐户的上下文中运行。 驱动程序可能需要访问不允许对本地服务帐户进行通用访问的其他设备或组件。
从 Windows 8 开始,操作系统包括标识 UMDF 驱动程序的安全标识符 (SID) 。 通过在设备安全要求中包含此 SID,设备或组件可以允许访问 UMDF 驱动程序,同时阻止来自本地服务帐户的其他请求的访问。
UMDF 驱动程序的 SID SDDL_USER_MODE_DRIVERS,定义位于 sddl.h 中。 此 SID 的完整表示形式为:
S-1-5-84-0-0-0-0-0
此 SID 的缩写为 UD。 此缩写从 Windows 8 开始提供。
UMDF 驱动程序外部的驱动程序可以在其 INF 文件或驱动程序中指定 SID,然后再创建设备对象。
在 INF 文件中指定设备安全性
在 INF 文件中,可以使用缩写形式或 SID 的完全指定形式。
缩写形式从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);