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 值。 可能的傳回值包括:

傳回碼 Description
STATUS_SUCCESS
要求傳送者具有裝置物件的必要存取權。
STATUS_ACCESS_DENIED
要求傳送者沒有裝置物件的必要存取權。
STATUS_INVALID_PARAMETER
指定的參數無效。 例如,如果例程傳遞的 IRP 不是 IRP_MJ_DEVICE_CONTROLIRP_MJ_FILE_SYSTEM_CONTROL IRP,則會傳回STATUS_INVALID_PARAMETER。

備註

WdmlibIoValidateDeviceIoControlAccess 可讓驅動程式執行 IOCTLs 的動態存取檢查。 使用此例程來要求比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].)
目標平台 Universal
標頭 wdmsec.h (包括 Wdmsec.h、Wdm.h、Ntddk.h、Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL 任何層級

另請參閱

IRP