共用方式為


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 n 篩選驅動程式,有效的 Index 值範圍從 0 到 n 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 值。 如需 Windows XP SP2 篩選管理員匯總套件的詳細資訊,請參閱 Microsoft 知識庫中的文章914882「Windows XP SP2的篩選管理員匯總套件」一文。
FilterAggregateStandardInformation Buffer 參數所指向的緩衝區會接收小型篩選或舊版篩選驅動程式的 FILTER_AGGREGATE_STANDARD_INFORMATION 結構。 從 Windows Vista 開始,這個 InformationClass 值可供使用。

[out] Buffer

接收所要求資訊的呼叫端配置緩衝區指標。 緩衝區中傳回的信息類型是由 InformationClass 參數所定義。

[in] BufferSize

Buffer 參數指向的緩衝區大小,以位元組為單位。 呼叫端應該根據指定的 InformationClass 值來設定此參數。

[out] BytesReturned

呼叫端配置的變數指標,該變數會接收 Buffer 指向之緩衝區中傳回的位元組數目。 如果 BufferSize 的輸入值太小,FltEnumerateFilterInformation 會傳回STATUS_BUFFER_TOO_SMALL,並將此變數設定為儲存要求資訊所需的位元組數目。 這是必要參數,而且無法 NULL

傳回值

FltEnumerateFilterInformation 會傳回STATUS_SUCCESS或適當的 NTSTATUS 值,例如下列其中一項:

傳回碼 描述
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),依此傳回。 最後,最後會傳回最接近文件系統之篩選驅動程序的資訊(具有 Index 參數值 n-1)。

注意 因為篩選驅動程式可以隨時註冊,因此,FltEnumerateFilterInformation 的兩個呼叫可能未傳回相同的 Index
 
若要列舉所有已註冊的迷你篩選驅動程式,請呼叫 FltEnumerateFilters

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

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

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

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

要求

要求 價值
目標平臺 普遍
標頭 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