FltEnumerateVolumes 函式 (fltkernel.h)

FltEnumerateVolumes 例程會列舉系統中的所有磁碟區。

語法

NTSTATUS FLTAPI FltEnumerateVolumes(
  [in]  PFLT_FILTER Filter,
  [out] PFLT_VOLUME *VolumeList,
  [in]  ULONG       VolumeListSize,
  [out] PULONG      NumberVolumesReturned
);

參數

[in] Filter

呼叫端的不透明篩選指標。 這個參數是必要的,而且不能是 NULL

[out] VolumeList

接收不透明磁碟區指標數位列之呼叫端配置的緩衝區指標。 此參數是選擇性的,如果 VolumeListSize 為零,則可以是 NULL。 如果 VolumeListSize 在輸入上為零,而 VolumeListNULL,NumberVolumesReturned 就會接收找到的磁碟區數目。

[in] VolumeListSize

VolumeList 所指向之緩衝區可保存的不透明篩選指標數目。 此參數是選擇性的,而且可以是零。 如果 VolumeListSize 在輸入上為零,而 VolumeListNULL,NumberVolumesReturned 就會接收找到的磁碟區數目。

[out] NumberVolumesReturned

呼叫端配置的變數指標,該變數會接收 VolumeList 所指向之數位中傳回的不透明磁碟區指標數目。 如果 VolumeListSize 太小,而且 VolumeList 在輸入時為非 NULL,FltEnumerateVolumes 會傳回STATUS_BUFFER_TOO_SMALL,並將 NumberVolumesReturned 設定為指向找到的磁碟區數目。 這個參數是必要的,而且不能是 NULL

傳回值

FltEnumerateVolumes 會傳回STATUS_SUCCESS或適當的 NTSTATUS 值,如下所示:

傳回碼 Description
STATUS_BUFFER_TOO_SMALL
VolumeList 參數指向的緩衝區不夠大,無法儲存要求的資訊。 這是錯誤碼。

備註

由於篩選管理員的磁碟區清單內容可以隨時變更,因此不保證會傳回相同的結果, FltEnumerateVolumes 的兩次呼叫。

FltEnumerateVolumes 會在 VolumeList 指向的陣列中傳回的每個不透明磁碟區指標中,新增一個下拉式參考。 不再需要這些指標時,呼叫端必須在每一個指標上呼叫 FltObjectDereference 來釋放這些指標。 因此,每個成功呼叫 FltEnumerateVolumes 都必須符合每個傳回之磁碟區指標的 後續 FltObjectDereference 呼叫。

若要將 VolumeList 參數傳回的一或多個不透明磁碟區指標轉換成磁碟區資訊,請呼叫 FltGetVolumeInformation

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

若要列舉所有已註冊的迷你篩選驅動程式,請呼叫 FltEnumerateFilters

若要列舉所有迷你篩選驅動程序實例,請呼叫 FltEnumerateInstances

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

規格需求

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

另請參閱

FltEnumerateFilters

FltEnumerateInstanceInformationByVolume

FltEnumerateInstances

FltEnumerateVolumeInformation

FltGetVolumeInformation

FltObjectDereference