WdmlibIoValidateDeviceIoControlAccess 函数 (wdmsec.h)

WdmlibIoValidateDeviceIoControlAccess 函数验证IRP_MJ_DEVICE_CONTROLIRP_MJ_FILE_SYSTEM_CONTROL IRP 的发送方是否具有对设备对象的指定访问权限。

语法

NTSTATUS WdmlibIoValidateDeviceIoControlAccess(
  [in] PIRP  Irp,
  [in] ULONG RequiredAccess
);

参数

[in] Irp

指定要对其执行访问检查的 IRP

[in] RequiredAccess

指定请求发送方必须具有的设备对象的访问类型。 调用方可以指定以下一个或多个标志。

含义
FILE_READ_ACCESS
请求发送方必须对设备对象具有读取访问权限
FILE_WRITE_ACCESS
请求发送方必须对设备对象具有写入访问权限。

返回值

WdmlibIoValidateDeviceIoControlAccess 返回 NTSTATUS 值。 可能的返回值包括:

返回代码 说明
STATUS_SUCCESS
请求发送方具有对设备对象的必要访问权限。
STATUS_ACCESS_DENIED
请求发送方对设备对象没有必要的访问权限。
STATUS_INVALID_PARAMETER
指定的参数无效。 例如,如果向例程传递的 IRP 不是 IRP_MJ_DEVICE_CONTROLIRP_MJ_FILE_SYSTEM_CONTROL IRP,则返回STATUS_INVALID_PARAMETER。

注解

WdmlibIoValidateDeviceIoControlAccess 允许驱动程序对 IOCTL 执行动态访问检查。 使用此例程需要比 IOCTL 定义中指定的更严格的访问。 如果例程返回STATUS_ACCESS_DENIED,则驱动程序可以使用STATUS_ACCESS_DENIED状态值完成请求。

例如,如果定义的 IOCTL 的 RequiredAccess 值为 FILE_ANY_ACCESS,则默认情况下,对设备对象具有 SYNCHRONIZE 访问权限的任何请求发送者都可以发送 IOCTL。 使用 WdmlibIoValidateDeviceIoControlAccess 在运行时要求更严格的安全性。 有关 IOCTL 的 RequiredAccess 值的详细信息,请参阅 定义 I/O 控制代码

仅当 IRP 结构的 RequestorMode 成员为 UserMode 时,才会执行访问检查。 如果 RequestorModeKernelMode,则例程会自动返回STATUS_SUCCESS。

要求

要求
最低受支持的客户端 在 Windows Server 2003 及更高版本的 Windows 中可用。 还必须适用于 Windows 2000 和 Windows XP 的驱动程序可以改为链接到 Wdmsec.lib 以使用此例程。 (Wdmsec.lib 库最初随 Windows XP Service Pack 1 [SP1] 和 Windows Server 2003 版本的驱动程序开发工具包 [DDK] 一起提供,现在随 Windows 驱动程序工具包 [WDK] 一起提供 )
目标平台 通用
标头 wdmsec.h (包括 Wdmsec.h、Wdm.h、Ntddk.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 任何级别

另请参阅

IRP