WdmlibIoValidateDeviceIoControlAccess 函式 (wdmsec.h)
WdmlibIoValidateDeviceIoControlAccess 函式會確認IRP_MJ_DEVICE_CONTROL或IRP_MJ_FILE_SYSTEM_CONTROL IRP 的傳送者具有裝置物件的指定存取權。
語法
NTSTATUS WdmlibIoValidateDeviceIoControlAccess(
[in] PIRP Irp,
[in] ULONG RequiredAccess
);
參數
[in] Irp
指定要在其中執行存取檢查的 IRP 。
[in] RequiredAccess
指定要求傳送者必須擁有之裝置物件的存取類型。 呼叫端可以指定下列一或多個旗標。
值 | 意義 |
---|---|
|
要求傳送者必須具有裝置對象的讀取許可權 |
|
要求傳送者必須具有裝置物件的寫入許可權。 |
傳回值
WdmlibIoValidateDeviceIoControlAccess 會傳回 NTSTATUS 值。 可能的傳回值包括:
傳回碼 | Description |
---|---|
|
要求傳送者具有裝置物件的必要存取權。 |
|
要求傳送者沒有裝置物件的必要存取權。 |
|
指定的參數無效。 例如,如果例程傳遞的 IRP 不是 IRP_MJ_DEVICE_CONTROL 或 IRP_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 時,才會執行存取檢查。 如果 RequestorMode 是 KernelMode,則例程會自動傳回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 | 任何層級 |