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