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 。 否則,傳回之裝置物件的欄位可能無效。 這是回呼例程中的案例,例如 InstanceTeardownStartCallback 和 InstanceTeardownCompleteCallback。
若要取得指定磁碟區 (VDO) 篩選管理員磁碟區裝置物件的指標,請呼叫 FltGetDeviceObject。
若要取得磁碟區裝置物件所代表之磁碟區的不透明磁碟區指標,請呼叫 FltGetVolumeFromDeviceObject。
如需磁碟區裝置對象的詳細資訊,請參閱 文件系統堆疊。
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
標頭 | fltkernel.h (包含 Fltkernel.h) |
程式庫 | Fltmgr.lib |
Dll | Fltmgr.sys |
IRQL | <= DISPATCH_LEVEL |