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 が 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 ライブラリは、最初にドライバー開発キット [DDK] の Windows XP Service Pack 1 [SP1] および Windows Server 2003 エディションに付属し、Windows ドライバー キット [WDK] に付属しています)。 |
対象プラットフォーム | ユニバーサル |
Header | wdmsec.h (Wdmsec.h、Wdm.h、Ntddk.h、Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | 任意のレベル |