IRP_MJ_QUERY_SECURITY (FS およびフィルター ドライバー)

送信時

I/O マネージャーは IRP_MJ_QUERY_SECURITY リクエストを送信します。 たとえば、ユーザーモード アプリケーションが GetSecurityInfo などの Win32 関数を呼び出したときに送信できます。

操作: ファイル システム ドライバー

ファイル システム ドライバーは、ファイル オブジェクトを抽出およびデコードして、それが開いているユーザー ファイルを表すかディレクトリを表すかを判断する必要があります。 存在する場合、ドライバーはクエリを処理し、IRP を完了する必要があります。 それ以外の場合、ドライバーはクエリを処理せずに、必要に応じて IRP を完了する必要があります。

操作: レガシー ファイル システム フィルター ドライバー

フィルター ドライバーは、この IRP をスタック上の次に下位のドライバーに渡す必要があります。

パラメーター

ファイル システムまたはフィルター ドライバーは、指定された IRP で IoGetCurrentIrpStackLocation を呼び出して、IRP 内の独自のスタックの場所へのポインターを取得します。 次のパラメーターでは、IrpIRP を指し、IrpSpIO_STACK_LOCATION を指します。 ドライバーは、IRP の次のメンバーと IRP スタックの場所に設定されている情報を使用して、クエリ セキュリティ要求を処理できます。

  • DeviceObject ターゲット デバイス オブジェクトへのポインターです。

  • Irp->Ioステータス は、最終的な完了ステータスと要求された操作に関する情報を受け取る IO_STATUS_BLOCK構造体を指します。

  • Irp->UserBuffer 指定されたオブジェクトのセキュリティ記述子のコピーを受け取る、呼び出し元が提供した出力バッファーを指します。 呼び出しプロセスには、オブジェクトのセキュリティ ステータスの指定された側面を表示する権限が必要です。 SECURITY_DESCRIPTOR 構造体は自己相対形式で返されます。

  • IrpSp->FileObject は、DeviceObject に関連付けられているファイル オブジェクトを指します。

    Windows XP 以降では、ファイル オブジェクトは名前付きデータ ストリームを表すことができます。 名前付きデータ ストリームの詳細については、「FILE_STREAM_INFORMATION」を参照してください。

    IrpSp->FileObject パラメーターには、FILE_OBJECT構造体でもある RelatedFileObject フィールドへのポインターが含まれています。 RelatedFileObject FILE_OBJECT 構造体のフィールドは、IRP_MJ_QUERY_SECURITY の処理中は無効であるため、使用しないでください。

  • IrpSp->MajorFunction は IRP_MJ_QUERY_SECURITY に設定されます。

  • IrpSp->Parameters.QuerySecurity.Length が指すバッファのサイズ (バイト単位) 、Irp->UserBuffer パラメーターです。

  • IrpSp->Parameters.QuerySecurity.SecurityInformation は、SECURITY_INFORMATION 操作のための構造体を指します。 この値は、次のビットの有効な組み合わせになります。

    セキュリティ情報の値 意味
    OWNER_SECURITY_INFORMATION オブジェクトの所有者識別子が照会されていることを示します。 READ_CONTROL アクセスが必要です。
    GROUP_SECURITY_INFORMATION オブジェクトのプライマリ グループ識別子が照会されていることを示します。 READ_CONTROL アクセスが必要です。
    DACL_SECURITY_INFORMATION オブジェクトの任意アクセス制御リスト (DACL) が照会されていることを示します。 READ_CONTROL アクセスが必要です。
    SACL_SECURITY_INFORMATION オブジェクトのシステム ACL (SACL) が照会されていることを示します。 ACCESS_SYSTEM_SECURITY アクセスが必要です。

関連項目

FILE_STREAM_INFORMATION

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_SET_SECURITY

SECURITY_DESCRIPTOR

SECURITY_INFORMATION