共用方式為


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
STATUS_BUFFER_TOO_SMALL
Buffer 參數指向的緩衝區不夠大,無法儲存要求的資訊。 這是錯誤碼。
STATUS_FLT_DELETING_OBJECT
找到相符的迷你篩選驅動程式,但正在損毀。 這是錯誤碼。
STATUS_INVALID_PARAMETER
針對 InformationClass 參數指定了無效的值。 例如,如果在 Windows Vista 之前的作業系統上指定 FilterAggregateStandardInformation ,例程將會傳回STATUS_INVALID_PARAMETER。 這是錯誤碼。
STATUS_NO_MORE_ENTRIES
已註冊篩選驅動程式的全域清單中沒有其他專案。 (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) 。

注意因為篩選驅動程式可以隨時註冊,所以使用相同 IndexFltEnumerateFilterInformation 兩次呼叫可能不會傳回相同的結果。
 
若要列舉所有已註冊的迷你篩選驅動程式,請呼叫 FltEnumerateFilters

若要列舉所有已註冊的舊版篩選驅動程式,請呼叫 IoEnumerateRegisteredFiltersList

若要列舉指定迷你篩選驅動程式的所有實例,請呼叫 FltEnumerateInstanceInformationByFilter

若要列舉指定磁碟區上的所有迷你篩選驅動程序實例,請呼叫 FltEnumerateInstanceInformationByVolume

若要列出篩選管理員已知所有磁碟區的磁碟區資訊,請呼叫 FltEnumerateVolumeInformation

規格需求

需求
目標平台 Universal
標頭 fltkernel.h (包括 FltKernel.h)
程式庫 FltMgr.lib
IRQL <= APC_LEVEL

另請參閱

FILTER_AGGREGATE_BASIC_INFORMATION

FILTER_AGGREGATE_STANDARD_INFORMATION

FILTER_FULL_INFORMATION

FltEnumerateFilters

FltEnumerateInstanceInformationByFilter

FltEnumerateInstanceInformationByVolume

FltEnumerateVolumeInformation

FltGetFilterInformation

IoEnumerateRegisteredFiltersList