WdfDeviceInitAssignSDDLString 函数 (wdfdevice.h)

[仅适用于 KMDF]

WdfDeviceInitAssignSDDLString 方法为设备分配安全设置。

语法

NTSTATUS WdfDeviceInitAssignSDDLString(
  [in]           PWDFDEVICE_INIT  DeviceInit,
  [in, optional] PCUNICODE_STRING SDDLString
);

参数

[in] DeviceInit

指向 WDFDEVICE_INIT 结构的指针。

[in, optional] SDDLString

指向描述 Unicode 字符串的 UNICODE_STRING 结构的指针。 此字符串是安全描述符的 SDDL 表示形式。

返回值

如果作成功,WdfDeviceInitAssignSDDLString 返回STATUS_SUCCESS。 其他返回值包括:

返回代码 描述
STATUS_INSUFFICIENT_RESOURCES
系统无法分配空间来存储设备名称。

言论

驱动程序可以使用安全描述符定义语言(SDDL)的子集来指定安全设置。 Wdmsec.h 文件定义了一组SDDL_DEVOBJ_XXX格式的常量,可以使用这些常量。 有关安全描述符和 SDDL 的详细信息,请参阅 保护设备对象

系统管理员可以通过向注册表添加安全描述符来替代指定的安全描述符。 有关详细信息,请参阅 IoCreateDeviceSecure

在调用 WdfDeviceInitAssignSDDLString之前,驱动程序必须调用 WdfDeviceInitAssignName,或者它必须调用 WdfDeviceInitSetCharacteristics 并指定FILE_AUTOGENERATED_DEVICE_NAME,因为无法为未命名的设备对象提供安全描述符。

如果驱动程序调用 WdfDeviceInitAssignSDDLString,则必须在调用 WdfDeviceCreate之前执行此作。 有关调用 WdfDeviceCreate的详细信息,请参阅 创建框架设备对象

有关安全问题的详细信息,请参阅 Framework-Based 驱动程序的安全问题。

如果要编写 UMDF 驱动程序,则必须修改驱动程序的 INF 文件,为堆栈提供适当的安全描述符。 有关详细信息,请参阅 保护设备对象。 有关使用注册表的详细信息,请参阅 安装期间设置设备对象注册表属性

例子

下面的代码示例为设备分配安全设置。

NTSTATUS status;

status = WdfDeviceInitAssignSDDLString(
                                       pDeviceInit,
                                       &SDDL_DEVOBJ_SYS_ALL_ADM_ALL
                                       );

要求

要求 价值
目标平台 普遍
最低 KMDF 版本 1.0
标头 wdfdevice.h (包括 Wdf.h)
Wdf01000.sys(请参阅框架库版本控制。
IRQL PASSIVE_LEVEL
DDI 符合性规则 ChildDeviceInitAPI(kmdf)DeviceInitAPI(kmdf)DriverCreate(kmdf)InitFreeDeviceCallback(kmdf)InitFreeDeviceCreate(kmdf)InitFreeNull(kmdf)kmdfIrql(kmdf)KmdfIrql2(kmdf),KmdfIrqlExplicit(kmdf),PdoDeviceInitAPI (kmdf)PdoInitFreeDeviceCallback(kmdf)PdoInitFreeDeviceCreate(kmdf)