WdfDmaEnablerWdmGetDmaAdapter 函式 (wdfdmaenabler.h)
[僅適用於 KMDF]
WdfDmaEnablerWdmGetDmaAdapter 方法會傳回與 DMA 啟用器對象相關聯的 WDM DMA_ADAPTER 結構的指標。
語法
PDMA_ADAPTER WdfDmaEnablerWdmGetDmaAdapter(
[in] WDFDMAENABLER DmaEnabler,
[in] WDF_DMA_DIRECTION DmaDirection
);
參數
[in] DmaEnabler
驅動程式從先前呼叫 wdfDmaEnablerCreate 取得之 DMA enabler 物件的句柄。
[in] DmaDirection
WDF_DMA_DIRECTION型別值,指定 DMA 傳輸作業的方向。 如需詳細資訊,請參閱下列一節。
返回值
WdfDmaEnablerWdmGetDmaAdapter 會傳回 DMA_ADAPTER 結構的指標,如果 DmaDirection 參數的值無效,NULL。
如果驅動程式提供無效的物件句柄,就會發生錯誤檢查。
備註
當驅動程式呼叫 WdfDmaEnablerCreate時,如果驅動程式指定雙工配置檔,架構會為每個方向建立個別的 配接器物件,如果驅動程式未指定雙工配置檔,則會建立單一配接器物件。
如果您的驅動程式在呼叫 WdfDmaEnablerCreate時指定雙工配置檔,則 WdfDmaEnablerWdmGetDmaAdapter 方法的 DmaDirection 參 數 的值必須 WdfDmaDirectionReadFromDevice,才能取得讀取作業的 DMA_ADAPTER 結構,WdfDmaDirectionWriteToDevice,以取得寫入作業的 DMA_ADAPTER 結構。 如果您的驅動程式未指定雙工配置檔,驅動程式可以指定 WdfDmaDirectionReadFromDevice 或 WdfDmaDirectionWriteToDevice。
WdfDmaEnablerWdmGetDmaAdapter 傳回的指標有效,直到刪除 DMA enabler 對象為止。 如果驅動程式為 DMA 啟用者物件提供 EvtCleanupCallback 函式,則指標會有效,直到回呼函式傳回為止。
範例
下列程式代碼範例會建立 DMA 啟用器物件,然後取得架構為讀取和寫入作業所建立之 WDM DMA_ADAPTER 結構的指標。
NTSTATUS status = STATUS_SUCCESS;
WDF_DMA_ENABLER_CONFIG dmaConfig;
WDFDMAENABLER dmaEnabler;
PDMA_ADAPTER readAdapter, writeAdapter;
WDF_DMA_ENABLER_CONFIG_INIT(
&dmaConfig,
WdfDmaProfileScatterGatherDuplex,
maxLength
);
status = WdfDmaEnablerCreate(
Device,
&dmaConfig,
WDF_NO_OBJECT_ATTRIBUTES,
&dmaEnabler
);
if (!NT_SUCCESS (status)) {
return status;
}
readAdapter = WdfDmaEnablerWdmGetDmaAdapter(
dmaEnabler,
WdfDmaDirectionReadFromDevice
);
writeAdapter = WdfDmaEnablerWdmGetDmaAdapter(
dmaEnabler,
WdfDmaDirectionWriteToDevice
);
需求
要求 | 價值 |
---|---|
目標平臺 | 普遍 |
最低 KMDF 版本 | 1.5 |
標題 | wdfdmaenabler.h (包括 Wdf.h) |
程式庫 | Wdf01000.sys (請參閱架構連結庫版本控制。) |
IRQL | <=DISPATCH_LEVEL |
DDI 合規性規則 | DriverCreate(kmdf),KmdfIrql(kmdf),KmdfIrql2(kmdf),KmdfIrqlExplicit(kmdf) |