WdfDmaEnablerWdmGetDmaAdapter 函式 (wdfdmaenabler.h)
[僅適用於 KMDF]
WdfDmaEnablerWdmGetDmaAdapter 方法會傳回與 DMA enabler 對象相關聯的 WDM DMA_ADAPTER 結構的指標。
語法
PDMA_ADAPTER WdfDmaEnablerWdmGetDmaAdapter(
[in] WDFDMAENABLER DmaEnabler,
[in] WDF_DMA_DIRECTION DmaDirection
);
參數
[in] DmaEnabler
驅動程式從先前呼叫 WdfDmaEnablerCreate 取得的 DMA 啟用器物件的句柄。
[in] DmaDirection
指定 DMA 傳輸作業方向的 WDF_DMA_DIRECTION型別值。 如需詳細資訊,請參閱接下來的<備註>一節。
傳回值
WdfDmaEnablerWdmGetDmaAdapter 會傳回DMA_ADAPTER結構的指標,如果 DmaDirection 參數的值無效,則傳回 NULL。
如果驅動程式提供無效的物件句柄,就會發生錯誤檢查。
備註
當您的驅動程式呼叫 WdfDmaEnablerCreate 時,如果驅動程式指定雙工配置檔,架構會為每個方向建立個別的配接器 物件 ,如果驅動程式未指定雙工配置檔,則會建立單一配接器物件。
如果您的驅動程式在呼叫 WdfDmaEnablerCreate 時指定雙工配置檔, WdfDmaEnablerWdmGetDmaAdapter 方法的 DmaDirection 參數值必須是 WdfDmaDirectionReadFromDevice ,才能取得讀取作業 的DMA_ADAPTER 結構, WdfDmaDirectionWriteToDevice 才能取得寫入作業 的DMA_ADAPTER 結構。 如果您的驅動程式未指定雙工配置檔,驅動程式可以指定 WdfDmaDirectionReadFromDevice 或 WdfDmaDirectionWriteToDevice。
WdfDmaEnablerWdmGetDmaAdapter 傳回的指標有效,直到刪除 DMA enabler 對象為止。 如果驅動程式為 DMA 啟用程式物件提供 EvtCleanupCallback 函式,則指標會有效,直到回呼函式傳回為止。
範例
下列程式代碼範例會建立 DMA enabler 對象,然後取得架構針對讀取和寫入作業所建立之 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
);
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
最低 KMDF 版本 | 1.5 |
標頭 | wdfdmaenabler.h (包含 Wdf.h) |
程式庫 | Wdf01000.sys (請參閱 Framework Library Versioning.) |
IRQL | <=DISPATCH_LEVEL |
DDI 合規性規則 | DriverCreate (kmdf) 、 KmdfIrql (kmdf) 、 KmdfIrql2 (kmdf) 、 KmdfIrqlExplicit (kmdf) |