WdfIoTargetWdmGetTargetDeviceObject 函式 (wdfiotarget.h)
[僅適用於 KMDF]
WdfIoTargetWdmGetTargetDeviceObject 方法會傳回與指定本機或遠端 I/O 目標相關聯的 Windows 驅動程式模型 (WDM) 裝置物件的指標。
語法
PDEVICE_OBJECT WdfIoTargetWdmGetTargetDeviceObject(
[in] WDFIOTARGET IoTarget
);
參數
[in] IoTarget
從先前呼叫 WdfDeviceGetIoTarget 或 WdfIoTargetCreate 或從特製化 I/O 目標提供的方法取得的本機或遠端 I/O 目標物件的句柄。
傳回值
WdfIoTargetWdmGetTargetDeviceObject 會傳回 WDM DEVICE_OBJECT 結構的指標。
如果驅動程式提供無效的物件句柄,就會發生錯誤檢查。
備註
大部分以架構為基礎的驅動程式不需要存取 I/O 目標的 WDM 裝置物件。
WdfIoTargetWdmGetTargetDeviceObject 方法傳回的指標有效,直到驅動程式呼叫 WdfIoTargetClose 或 WdfIoTargetCloseForQueryRemove,或直到刪除遠端 I/O 目標對象為止。 如果驅動程式為遠端 I/O 目標物件提供 EvtCleanupCallback 函式,而且如果在關閉遠端 I/O 目標之前刪除物件,則指標會有效,直到 EvtCleanupCallback 函式傳回為止。
如果驅動程式在移除 WDM 裝置對象之後嘗試存取 WDM 裝置對象,驅動程式可能會導致系統當機。 toastmon 範例示範驅動程式如何提供 EvtIoTargetQueryRemove 回呼函式,以便在移除 I/O 目標時收到通知。
如需 WdfIoTargetWdmGetTargetDeviceObject 的詳細資訊,請參閱 取得一般 I/O 目標的相關信息。
如需 I/O 目標的詳細資訊,請參閱 使用 I/O 目標。
範例
下列程式代碼範例會檢查 I/O 目標的 WDM DEVICE_OBJECT 結構,以確認目標是否支援直接 I/O 作業。
if (!((WdfIoTargetWdmGetTargetDeviceObject(Adapter->IoTarget))->Flags
& DO_DIRECT_IO)) {
ASSERTMSG("Target device doesn't support direct I/O\n", FALSE);
return STATUS_INVALID_DEVICE_REQUEST;
}
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
最小 KMDF 版本 | 1.0 |
標頭 | wdfiotarget.h (包含 Wdf.h) |
程式庫 | Wdf01000.sys (請參閱 Framework Library Versioning.) |
IRQL | <=DISPATCH_LEVEL |
DDI 合規性規則 | DriverCreate (kmdf) 、 KmdfIrql (kmdf) 、 KmdfIrql2 (kmdf) 、 KmdfIrqlExplicit (kmdf) |