IRP_MJ_QUERY_EA (FS およびフィルター ドライバー)
送信時
I/O マネージャー、他のオペレーティング システム コンポーネント、および他のカーネル モード ドライバーは、ユーザー モード アプリケーションがファイルの拡張属性に関する情報を要求したときに、IRP_MJ_QUERY_EA 要求を送信します。
操作: ファイル システム ドライバー
ファイル システムが拡張属性をサポートしている場合、ファイル システム ドライバーはクエリを処理し、IRP を完了する必要があります。 それ以外の場合は、STATUS_EAS_NOT_SUPPORTED を返す必要があります。
操作: レガシー ファイル システム フィルター ドライバー
フィルター ドライバーは、この IRP をスタック上の次に下位のドライバーに渡す必要があります。
パラメーター
ファイル システムまたはフィルター ドライバーは、指定された IRP で IoGetCurrentIrpStackLocation を呼び出して、IRP 内の独自のスタックの場所へのポインターを取得します。 次のパラメーターでは、Irp は IRP を指し、IrpSp は IO_STACK_LOCATION を指します。 ドライバーは、IRP の次のメンバーと IRP スタックの場所に設定されている情報を使用して、IRP_MJ_QUERY_EA 要求を処理できます。
DeviceObject ターゲット デバイス オブジェクトへのポインターです。
Irp->AssociatedIrp.SystemBuffer 中間システム バッファとして使用されるシステム提供の出力バッファを指します。 METHOD_BUFFERED I/O に使用されます。
Irp->Ioステータス は、最終的な完了ステータスと要求された操作に関する情報を受け取る IO_STATUS_BLOCK構造体を指します。
Irp->MdlAddress 拡張属性情報を受け取る出力バッファを記述するメモリ記述子リスト (MDL) のアドレスです。 METHOD_DIRECT I/O に使用されます。
Irp->UserBuffer 呼び出し元が指定したものを指します FILE_FULL_EA_INFORMATION--拡張属性情報を受け取る構造化された出力バッファー。 METHOD_NEITHER I/O に使用されます。
IrpSp->FileObject は、DeviceObject に関連付けられているファイル オブジェクトを指します。
IrpSp->FileObject パラメーターには、FILE_OBJECT構造体でもある RelatedFileObject フィールドへのポインターが含まれています。 The RelatedFileObject FILE_OBJECT 構造体のフィールドは、IRP_MJ_QUERY_EA の処理中は無効であるため、使用しないでください。
IrpSp->フラグ 次の 1 つ以上の値を指定できます。
フラグ | 意味 |
---|---|
SL_INDEX_SPECIFIED | インデックスが IrpSp->Parameters.QueryEa.EaIndex で指定されている拡張属性リストのエントリからスキャンを開始します。 |
SL_RESTART_SCAN | リストの最初のエントリからスキャンを開始します。 このフラグが設定されていない場合は、前の IRP_MJ_QUERY_EA リクエストからスキャンを再開します。 |
SL_RETURN_SINGLE_ENTRY | 見つかった最初のエントリのみを返します。 |
IrpSp->MajorFunction は IRP_MJ_QUERY_EA に設定されます。
IrpSp->Parameters.QueryEa.EaIndex拡張属性リストのスキャンを開始するエントリのインデックスです。 SL_INDEX_SPECIFIED フラグが設定されていない場合、または次の場合、このパラメータは無視されます。IrpSp->Parameters.QueryEa.EaList 空ではないリストを指します。
IrpSp->Parameters.QueryEa.EaList呼び出し元が指定したものを指します FILE_GET_EA_INFORMATION- クエリ対象の拡張属性を指定する構造化入力バッファ。
IrpSp->Parameters.QueryEa.EaListLength が指すバッファのバイト長です。IrpSp->Parameters.QueryEa.EaList.
IrpSp->Parameters.QueryEa.Length 出力バッファーのバイト単位の長さです。
解説
短いバッファーが指定され、STATUS_BUFFER_OVERFLOW が返されると、NTFS は適合する最後の FILE_FULL_EA_INFORMATION エントリー全体を返します。 短いバッファーが指定され、STATUS_BUFFER_TOO_SMALL が返された場合、NTFS は FILE_FULL_EA_INFORMATION エントリーを収容できませんでした。
Windows Vista 以降では、FAT16 は拡張属性をサポートしなくなりました。