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
要求送信者が持つ必要があるデバイス オブジェクトへのアクセスの種類を指定します。 呼び出し元は、次のフラグの 1 つ以上を指定できます。
価値 | 意味 |
---|---|
|
要求送信者は、デバイス オブジェクトへの読み取りアクセス権を持っている必要があります |
|
要求送信者は、デバイス オブジェクトへの書き込みアクセス権を持っている必要があります。 |
戻り値
WdmlibIoValidateDeviceIoControlAccess NTSTATUS 値を返します。 可能な戻り値は次のとおりです。
リターン コード | 形容 |
---|---|
|
要求送信者は、デバイス オブジェクトに必要なアクセス権を持っています。 |
|
要求送信者は、デバイス オブジェクトに必要なアクセス権を持っていません。 |
|
指定されたパラメーターが無効です。 たとえば、ルーチンは、IRP_MJ_DEVICE_CONTROL または IRP_MJ_FILE_SYSTEM_CONTROL IRP ではない IRP を渡された場合、STATUS_INVALID_PARAMETERを返します。 |
備考
WdmlibIoValidateDeviceIoControlAccess 、ドライバーは IOCTL の動的アクセス チェックを実行できます。 このルーチンは、IOCTL の定義で指定されたアクセスよりも制限の厳しいアクセスを要求する場合に使用します。 ルーチンがSTATUS_ACCESS_DENIEDを返す場合、ドライバーは、STATUS_ACCESS_DENIED状態の値を使用して要求を完了できます。
たとえば、IOCTL が FILE_ANY_ACCESS の RequiredAccess 値で定義されている場合、既定では、デバイス オブジェクトへの 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 ライブラリは、最初にドライバー開発キット [DDK] の Windows XP Service Pack 1 [SP1] および Windows Server 2003 エディションに付属しており、Windows ドライバー キット [WDK] に付属しています)。 |
ターゲット プラットフォーム の | 万国 |
ヘッダー | wdmsec.h (Wdmsec.h、Wdm.h、Ntddk.h、Ntifs.h を含む) |
ライブラリ | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | 任意のレベル |