FltEnumerateFilterInformation 函式 (fltkernel.h)
FltEnumerateFilterInformation 例程提供所有已註冊篩選驅動程式的資訊, (包括迷你篩選程式和系統中) 的舊版篩選驅動程式。
語法
NTSTATUS FLTAPI FltEnumerateFilterInformation(
[in] ULONG Index,
[in] FILTER_INFORMATION_CLASS InformationClass,
[out] PVOID Buffer,
[in] ULONG BufferSize,
[out] PULONG BytesReturned
);
參數
[in] Index
要求信息的篩選驅動程式以零起始的索引。 此參數會識別已註冊篩選驅動程式之全域清單中的篩選。 如果清單包含 n 個篩選驅動程式,則有效的 索引 值範圍從 0 到 n-1。 如果 Index 值超過此範圍, FltEnumerateFilterInformation 會傳回STATUS_NO_MORE_ENTRIES。
[in] InformationClass
要求的信息類型。 此參數可以有下列其中一個值。
值 | 意義 |
---|---|
FilterFullInformation | Buffer 參數所指向的緩衝區會接收迷你篩選驅動程式 ( 舊版篩選驅動程式FILTER_FULL_INFORMATION結構) 。 |
FilterAggregateBasicInformation | Buffer 參數所指向的緩衝區會接收迷你篩選或舊版篩選驅動程式的FILTER_AGGREGATE_BASIC_INFORMATION結構。 從 Microsoft Windows Server 2003 SP1 和具有篩選管理員匯總的 Windows XP SP2 開始,即可取得這項 InformationClass 值。 For more about the filter manager rollup package for Windows XP SP2, see article 914882, "The filter manager rollup package for Windows XP SP2," in the Microsoft Knowledge Base. |
FilterAggregateStandardInformation | Buffer 參數所指向的緩衝區會接收迷你篩選或舊版篩選驅動程式的FILTER_AGGREGATE_STANDARD_INFORMATION結構。 這個 InformationClass 值可從 Windows Vista 開始取得。 |
[out] Buffer
接收要求資訊的呼叫端配置緩衝區指標。 緩衝區中傳回的信息類型是由 InformationClass 參數所定義。
[in] BufferSize
Buffer 參數指向的緩衝區大小,以位元組為單位。 呼叫端應該根據指定的 InformationClass 值來設定此參數。
[out] BytesReturned
呼叫端配置的變數指標,該變數會接收 Buffer 所指向之緩衝區中傳回的位元組數目。 如果 BufferSize 的輸入值太小, FltEnumerateFilterInformation 會傳回STATUS_BUFFER_TOO_SMALL,並將此變數設定為儲存要求資訊所需的位元組數目。 這個參數是必要的,而且不能是 NULL。
傳回值
FltEnumerateFilterInformation 會傳回STATUS_SUCCESS或適當的 NTSTATUS 值,例如下列其中一項:
傳回碼 | Description |
---|---|
|
Buffer 參數指向的緩衝區不夠大,無法儲存要求的資訊。 這是錯誤碼。 |
|
找到相符的迷你篩選驅動程式,但正在損毀。 這是錯誤碼。 |
|
針對 InformationClass 參數指定了無效的值。 例如,如果在 Windows Vista 之前的作業系統上指定 FilterAggregateStandardInformation ,例程將會傳回STATUS_INVALID_PARAMETER。 這是錯誤碼。 |
|
已註冊篩選驅動程式的全域清單中沒有其他專案。 (Index 參數的值大於或等於篩選驅動程式的數目。) 這是警告碼。 |
備註
從 Microsoft Windows Server 2003 SP1 和 Windows XP SP2 搭配篩選管理員匯總開始, FltEnumerateFilterInformation 提供文件系統篩選驅動程式的相關信息, (也稱為「舊版篩選」) 和迷你篩選驅動程式。 在舊版 Windows 上, FltEnumerateFilterInformation 只會提供迷你篩選驅動程式的相關信息。
下列虛擬程式代碼會列舉所有已註冊篩選驅動程式的篩選資訊。
#define InfoClass FilterAggregateStandardInformation // Assumes Windows Vista or later operating system.
int i = 0;
while ( FltEnumerateFilterInformation(i, InfoClass, ...) != STATUS_NO_MORE_ENTRIES )
{
Process acquired filter driver information returned by the Buffer parameter of FltEnumerateFilterInformation, if applicable.
i++;
}
FltEnumerateFilterInformation 會透過 Buffer 參數傳回已註冊篩選驅動程式的相關信息,以降低基礎文件系統的距離。 例如,假設基礎文件系統上附加 了 n 個篩選驅動程式。 從文件系統最遠附加篩選驅動程式的相關信息,會先傳回 (Index 參數值為 0) 。 下一個附加篩選驅動程式的相關信息會傳回第二個 (,其中 Index 參數值為 1) ,依此類傳回。 最後,會傳回最接近文件系統的篩選驅動程式資訊,最後 (索引 參數值為 n-1) 。
若要列舉所有已註冊的舊版篩選驅動程式,請呼叫 IoEnumerateRegisteredFiltersList。
若要列舉指定迷你篩選驅動程式的所有實例,請呼叫 FltEnumerateInstanceInformationByFilter。
若要列舉指定磁碟區上的所有迷你篩選驅動程序實例,請呼叫 FltEnumerateInstanceInformationByVolume。
若要列出篩選管理員已知所有磁碟區的磁碟區資訊,請呼叫 FltEnumerateVolumeInformation。
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
標頭 | fltkernel.h (包括 FltKernel.h) |
程式庫 | FltMgr.lib |
IRQL | <= APC_LEVEL |
另請參閱
FILTER_AGGREGATE_BASIC_INFORMATION
FILTER_AGGREGATE_STANDARD_INFORMATION
FltEnumerateInstanceInformationByFilter