共用方式為


FltGetDiskDeviceObject 函式 (fltkernel.h)

FltGetDiskDeviceObject 例程會傳回與指定磁碟區相關聯的磁碟裝置物件的指標。

語法

NTSTATUS FLTAPI FltGetDiskDeviceObject(
  [in]  PFLT_VOLUME    Volume,
  [out] PDEVICE_OBJECT *DiskDeviceObject
);

參數

[in] Volume

磁碟區的不透明指標。 這是必要參數,而且無法 NULL

[out] DiskDeviceObject

接收裝置物件指標之呼叫端配置的變數指標。 在發生任何錯誤時,不會修改此參數。

傳回值

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

傳回碼 描述
STATUS_FLT_NO_DEVICE_OBJECT 指定的磁碟區不存在要求的裝置物件。 這是錯誤碼。

言論

FltGetDiskDeviceObject 擷取磁碟區所在實體磁碟之存儲設備物件的指標。 存儲設備不需要是實際的磁碟。

FltGetDiskDeviceObject 會遞增 DiskDeviceObject中所傳回之裝置對象指標的參考計數。 當不再需要此指標時,呼叫端必須藉由呼叫 obDereferenceObject 來遞減此參考計數。 因為未處理的參考,所以無法讓系統釋放或刪除裝置物件。 因此,FltGetDiskDeviceObject 的每個成功呼叫都必須與後續呼叫 ObDereferenceObject相符。

迷你篩選程序必須只在 I/O 相關回呼中呼叫 FltGetDiskDeviceObject。 否則,傳回之裝置物件的欄位可能無效。 這在回呼例程中的情況,例如 InstanceTeardownStartCallbackInstanceTeardownCompleteCallback

若要取得指定磁碟區的篩選管理員磁碟區裝置物件 (VDO) 指標,請呼叫 FltGetDeviceObject

若要取得磁碟區裝置物件所代表之磁碟區的不透明磁碟區指標,請呼叫 FltGetVolumeFromDeviceObject

如需磁碟區裝置物件的詳細資訊,請參閱 檔案系統堆疊

要求

要求 價值
目標平臺 普遍
標頭 fltkernel.h (包括 Fltkernel.h)
連結庫 Fltmgr.lib
DLL Fltmgr.sys
IRQL <= DISPATCH_LEVEL

另請參閱

FltGetDeviceObject

FltGetVolumeFromDeviceObject

ObDereferenceObject

ObReferenceObject