WdfIoTargetWdmGetTargetDeviceObject 函式 (wdfiotarget.h)

[僅適用於 KMDF]

WdfIoTargetWdmGetTargetDeviceObject 方法會傳回與指定本機或遠端 I/O 目標相關聯的 Windows 驅動程式模型 (WDM) 裝置物件的指標。

語法

PDEVICE_OBJECT WdfIoTargetWdmGetTargetDeviceObject(
  [in] WDFIOTARGET IoTarget
);

參數

[in] IoTarget

從先前呼叫 WdfDeviceGetIoTargetWdfIoTargetCreate 或從特製化 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)

另請參閱

DEVICE_OBJECT

WdfDeviceGetIoTarget

WdfIoTargetCreate

WdfIoTargetWdmGetTargetFileHandle

WdfIoTargetWdmGetTargetFileObject