小型篩選驅動程式可以將類型為 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) | 實例正手動附加,因為使用者模式應用程式已呼叫 filterAttach 或 FilterAttachAtAltitude,或因為內核模式元件已呼叫 FltAttachVolume 或 FltAttachVolumeAtAltitude |
| 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 (0x00000003)
- FILE_DEVICE_DISK_FILE_SYSTEM (0x00000008)
- FILE_DEVICE_NETWORK_FILE_SYSTEM (0x00000014)
[in] VolumeFilesystemType
磁碟區的檔案系統類型。 可能的值列在 FLT_FILESYSTEM_TYPE中。
傳回值
此回呼例程會傳回STATUS_SUCCESS或 NTSTATUS 值,如下所示:
| 傳回碼 | 描述 |
|---|---|
| STATUS_FLT_DO_NOT_ATTACH | 傳回此值可防止迷你篩選驅動程序實例附加至指定的磁碟區。 這是錯誤碼。 |
言論
注意
請勿在 PFLT_INSTANCE_SETUP_CALLBACK 實作中執行任何線程同步處理或進程間通訊。 執行這類作業可能會導致死結狀況。
當小型篩選驅動程式透過從其 DriverEntry 例程呼叫 FltRegisterFilter 來註冊自己時,它可以將類型 PFLT_INSTANCE_SETUP_CALLBACK 的例程註冊為迷你篩選驅動程式的 InstanceSetupCallback 例程。
若要註冊 InstanceSetupCallback 例 PFLT_INSTANCE_SETUP_CALLBACK 程,迷你篩選驅動程式會將 InstanceSetupCallbackFLT_REGISTRATION 結構的成員儲存為 FltRegisterFilterRegistration 參數。
篩選管理員會在掛接新磁碟區之後,在第一個作業上呼叫此例程。
篩選管理員會呼叫此例程,以允許迷你篩選驅動程式回應自動或手動附件要求。 如果這個例程傳回錯誤或警告 NTSTATUS 程式代碼,小型篩選驅動程序實例就不會附加至指定的磁碟區。 否則,迷你篩選驅動程序實例會附加至指定的磁碟區。
要求
| 要求 | 價值 |
|---|---|
| 目標平臺 | 桌面 |
| 標頭 | fltkernel.h (包括 Fltkernel.h) |
| IRQL | PASSIVE_LEVEL |
另請參閱
PFLT_INSTANCE_QUERY_TEARDOWN_CALLBACK