FltGetDiskDeviceObject 函式 (fltkernel.h)

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

語法

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

參數

[in] Volume

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

[out] DiskDeviceObject

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

傳回值

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

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

備註

FltGetDiskDeviceObject 會擷取磁碟區所在實體磁碟之儲存裝置物件的指標。 儲存裝置不一定是實際的磁碟。

FltGetDiskDeviceObject 會遞增 DiskDeviceObject 中所傳回之裝置對象指標上的參考計數。 不再需要此指標時,呼叫端必須藉由呼叫 ObDereferenceObject 來遞減此參考計數。 無法這麼做可防止系統因為未處理的參考而釋放或刪除裝置物件。 因此,每次成功呼叫 FltGetDiskDeviceObject 時,都必須符合 後續對 ObDereferenceObject 的呼叫。

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

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

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

如需磁碟區裝置對象的詳細資訊,請參閱 文件系統堆疊

規格需求

需求
目標平台 Universal
標頭 fltkernel.h (包含 Fltkernel.h)
程式庫 Fltmgr.lib
Dll Fltmgr.sys
IRQL <= DISPATCH_LEVEL

另請參閱

FltGetDeviceObject

FltGetVolumeFromDeviceObject

ObDereferenceObject

ObReferenceObject