共用方式為


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->IoStatus 指向 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> 參數包含 RelatedFileObject 字段的指標,這也是FILE_OBJECT結構。 FILE_OBJECT 結構的 RelatedFileObject 字段在處理IRP_MJ_QUERY_EA期間無效,不應使用。

  • IrpSp->旗標 可以是下列一或多個值。

旗標 意義
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.EaListLengthIrpSp-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 不再支援擴充屬性。

另請參閱

FILE_FULL_EA_INFORMATION

FILE_GET_EA_INFORMATION

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoCheckEaBufferValidity

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_SET_EA