共用方式為


IRP_MJ_QUERY_SECURITY (FS 和篩選驅動程式)

傳送時

I/O 管理員會傳送IRP_MJ_QUERY_SECURITY要求。 例如,當使用者模式應用程式呼叫 Win32 函式,例如 GetSecurityInfo 時,可以傳送它。

作業:檔案系統驅動程式

文件系統驅動程式應該擷取和譯碼檔案物件,以判斷它是否代表開啟的使用者檔案或目錄。 如果這樣做,驅動程式應該處理查詢並完成 IRP。 否則,驅動程式應該適當地完成 IRP,而不需處理查詢。

作業:舊版文件系統篩選驅動程式

篩選驅動程式應該會將此 IRP 向下傳遞至堆疊上的下一個較低驅動程式。

參數

文件系統或篩選驅動程式會針對指定的 IRP 呼叫 IoGetCurrentIrpStackLocation ,以取得 IRP 中本身堆疊位置的指標。 在下列參數中, Irp 會指向 IRP而 IrpSp 指向 IO_STACK_LOCATION。 驅動程式可以使用下列 IRP 成員和 IRP 堆疊位置中設定的資訊來處理查詢安全性要求:

  • DeviceObject 是目標裝置物件的指標。

  • Irp->IoStatus 指向接收最終完成狀態和所要求作業相關信息 的IO_STATUS_BLOCK 結構。

  • Irp->UserBuffer 指向呼叫端提供的輸出緩衝區,該緩衝區會接收指定物件之安全性描述元的複本。 呼叫進程必須具有許可權,才能檢視物件安全性狀態的指定層面。 SECURITY_DESCRIPTOR 結構會以自我相對格式傳回。

  • IrpSp->FileObject 指向與 DeviceObject 相關聯的檔案物件。

    在 Windows XP 和更新版本上,檔案物件可以代表具名數據流。 如需具名數據流的詳細資訊,請參閱 FILE_STREAM_INFORMATION

    IrpSp-FileObject> 參數包含 RelatedFileObject 字段的指標,這也是FILE_OBJECT結構。 FILE_OBJECT 結構的 RelatedFileObject 字段在處理IRP_MJ_QUERY_SECURITY期間無效,不應使用。

  • IrpSp->MajorFunction 設定為 IRP_MJ_QUERY_SECURITY。

  • IrpSp->Parameters.QuerySecurity.LengthIrp-UserBuffer> 參數所指向緩衝區的大小,以位元組為單位。

  • IrpSp->Parameters.QuerySecurity.SecurityInformation 指向作業 的SECURITY_INFORMATION 結構。 這個值可以是下列位的有效組合。

    SecurityInformation 值 意義
    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