IRP_MJ_SET_SECURITY (FS 和篩選驅動程式)

傳送時

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

作業:檔案系統驅動程式

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

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

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

參數

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

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

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

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

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

  • IrpSp->MajorFunction 設定為 IRP_MJ_SET_SECURITY。

  • IrpSp->Parameters.SetSecurity.SecurityDescriptor 指向 SECURITY_DESCRIPTOR 結構,其中包含要指派給 對象的安全性資訊值。

  • IrpSp->Parameters.SetSecurity.SecurityInformation 是類型的值 ,SECURITY_INFORMATION 指定要在安全性描述元中設定的安全性資訊,而且可以是下列其中一個值。

SecurityInformation 值 意義
DACL_SECURITY_INFORMATION 表示正在設定物件的任意訪問控制清單 (DACL) 。 需要WRITE_DAC存取權。
GROUP_SECURITY_INFORMATION 指出正在設定物件的主要群組標識碼。 需要WRITE_OWNER存取權。
OWNER_SECURITY_INFORMATION 表示正在設定對象的擁有者標識碼。 需要WRITE_OWNER存取權。
SACL_SECURITY_INFORMATION 表示正在設定對象的系統 ACL (SACL) 。 需要ACCESS_SYSTEM_SECURITY存取權。

另請參閱

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_QUERY_SECURITY

SECURITY_DESCRIPTOR

SECURITY_INFORMATION