PFLT_INSTANCE_SETUP_CALLBACK回呼函式 (fltkernel.h)

迷你篩選驅動程式可以註冊類型 為 PFLT_INSTANCE_SETUP_CALLBACK 的例程,做為迷你篩選驅動程式的 InstanceSetupCallback 例程。

語法

PFLT_INSTANCE_SETUP_CALLBACK PfltInstanceSetupCallback;

NTSTATUS PfltInstanceSetupCallback(
  [in] PCFLT_RELATED_OBJECTS FltObjects,
  [in] FLT_INSTANCE_SETUP_FLAGS Flags,
  [in] DEVICE_TYPE VolumeDeviceType,
  [in] FLT_FILESYSTEM_TYPE VolumeFilesystemType
)
{...}

參數

[in] FltObjects

FLT_RELATED_OBJECTS 結構的指標,其中包含與目前作業相關之物件的不透明指標。

[in] Flags

旗標的位掩碼,指出為何要附加實例。 可以是下列其中一或多個專案:

旗標 意義
FLTFL_INSTANCE_SETUP_AUTOMATIC_ATTACHMENT (0x00000001) 實例會自動附加。 迷你篩選驅動程式剛載入,並已附加至所有現有的磁碟區,或正在附加至新掛接的磁碟區。
FLTFL_INSTANCE_SETUP_MANUAL_ATTACHMENT (0x00000002) 實例正在手動附加,因為使用者模式應用程式稱為 FilterAttachFilterAttachAtAltitude,或因為內核模式元件稱為 FltAttachVolumeFltAttachVolumeAtAltitude
FLTFL_INSTANCE_SETUP_NEWLY_MOUNTED_VOLUME (0x00000004) 實例會自動附加至新掛接的磁碟區。
FLTFL_INSTANCE_SETUP_DETACHED_VOLUME (0x00000008) 實例正在附加至中斷連結的磁碟區。 在某些文件系統上, (例如 FAT 和 CDFS 等文件系統,有些卸載式媒體磁碟驅動器) 使用,以在卸離磁碟區之後重新附加磁碟區。 如果磁碟區沒有相關聯的記憶體堆疊,則會中斷連結。 處於此狀態的磁碟區通常是仍具有開啟檔案的卸除磁碟區。
FLTFL_INSTANCE_SETUP_DEV_VOLUME (0x00000010) 實例會附加至格式化為開發人員磁碟區的磁碟區。 檔案系統篩選器可以啟用不需要系統管理員信任指定計算機上磁碟區的優化。 從 Windows 11 22H2 9 月更新版開始提供。
FLTFL_INSTANCE_SETUP_TRUSTED_VOLUME (0x00000020) 指出指定計算機上的系統管理員信任此磁碟區,而且願意啟用優化,例如沒有附加至磁碟區的防毒篩選器。 此資訊會保存在指定電腦上的登錄中。 這可由文件系統篩選條件使用,以啟用優化,要求系統管理員信任指定計算機上的磁碟區。 從 Windows 11 22H2 9 月更新版開始提供。

[in] VolumeDeviceType

檔案系統磁碟區的裝置類型。 必須是下列其中之一:

  • FILE_DEVICE_CD_ROM_FILE_SYSTEM (0x00000002)
  • FILE_DEVICE_DISK_FILE_SYSTEM (0x00000008)
  • FILE_DEVICE_NETWORK_FILE_SYSTEM (0x00000014)

[in] VolumeFilesystemType

磁碟區的檔案系統類型。 可能的值會列在 FLT_FILESYSTEM_TYPE中。

傳回值

此回呼例程會傳回STATUS_SUCCESS或 NTSTATUS 值,如下所示:

傳回碼 Description
STATUS_FLT_DO_NOT_ATTACH 傳回此值可防止迷你篩選驅動程序實例附加至指定的磁碟區。 這是錯誤碼。

備註

注意

請勿在 PFLT_INSTANCE_SETUP_CALLBACK 實作中執行任何線程同步處理或進程間通訊。 執行這類作業可能會導致死結狀況。

當迷你篩選驅動程式從其 DriverEntry 例程呼叫 FltRegisterFilter 來註冊本身時,它可以註冊類型為 PFLT_INSTANCE_SETUP_CALLBACK 類型的例程,作為minifilter 驅動程式的 InstanceSetupCallback 例程。

若要註冊 InstanceSetupCallback 例程,迷你篩選驅動程式會將類型為 PFLT_INSTANCE_SETUP_CALLBACK 的例程位址儲存在 minifilter 驅動程式傳遞為 FltRegisterFilter註冊參數之 FLT_REGISTRATION 結構的 InstanceSetupCallback 成員中。

篩選管理員會在掛接新磁碟區之後,在第一個作業上呼叫此例程。

篩選管理員會呼叫此例程,以允許迷你篩選驅動程式回應自動或手動附件要求。 如果這個例程傳回錯誤或警告NTSTATUS程式碼,迷你篩選驅動程序實例就不會附加至指定的磁碟區。 否則,迷你篩選驅動程序實例會附加至指定的磁碟區。

規格需求

需求
目標平台 桌面
標頭 fltkernel.h (包含 Fltkernel.h)
IRQL PASSIVE_LEVEL

另請參閱

FLT_REGISTRATION

FLT_RELATED_OBJECTS

FilterAttach

FilterAttachAtAltitude

FltAttachVolume

FltAttachVolumeAtAltitude

FltRegisterFilter

PFLT_INSTANCE_QUERY_TEARDOWN_CALLBACK

PFLT_INSTANCE_TEARDOWN_CALLBACK

開發磁碟驅動器