WdfDmaEnablerConfigureSystemProfile 函式 (wdfdmaenabler.h)
[僅適用於 KMDF]
WdfDmaEnablerConfigureSystemProfile 方法會設定系統模式 DMA 啟用程式的硬體特定設定,並完成資源初始化。
語法
NTSTATUS WdfDmaEnablerConfigureSystemProfile(
[in] WDFDMAENABLER DmaEnabler,
[in] PWDF_DMA_SYSTEM_PROFILE_CONFIG ProfileConfig,
[in] WDF_DMA_DIRECTION ConfigDirection
);
參數
[in] DmaEnabler
DMA 啟用表達式物件的句柄。
[in] ProfileConfig
WDF_DMA_SYSTEM_PROFILE_CONFIG 結構的指標。 驅動程式必須藉由呼叫 WDF_DMA_SYSTEM_PROFILE_CONFIG_INIT 來初始化此結構。
[in] ConfigDirection
指定 DMA 傳輸作業方向的 WDF_DMA_DIRECTION型別值。 如果此啟用程式的 WDF_DMA_PROFILE 值不是 WdfDmaProfileSystemDuplex,架構會忽略此參數。
傳回值
如果作業成功,WdfDmaEnablerConfigureSystemProfile 會傳回STATUS_SUCCESS。 否則,方法可能會傳回下列其中一個值。
傳回碼 | Description |
---|---|
|
驅動程式要求目前操作系統不支援的 DMA 組態。 |
|
驅動程式在 ProfileConfig 參數中提供 NULL。 |
|
ProfileConfig 參數所指向之結構的 Size 成員不等於WDF_DMA_SYSTEM_PROFILE_CONFIG結構的大小。 |
|
ProfileConfig 參數所指向結構的 DmaDescriptor 成員為 NULL,或 ConfigDirection 參數包含無效的值。 |
備註
在呼叫 WdfDmaEnablerConfigureSystemProfile 之前,驅動程式必須呼叫 WdfDmaEnablerCreate 來建立 enabler 物件。
驅動程式通常會從其 EvtDevicePrepareHardware 回呼函式呼叫 WdfDmaEnablerConfigureSystemProfile。
如果您的驅動程式在呼叫 WdfDmaEnablerCreate 時指定雙工配置檔, WdfDmaEnablerConfigureSystemProfile 方法的 ConfigDirection 參數值必須是 WdfDmaDirectionReadFromDevice ,才能取得讀取作業 的DMA_ADAPTER 結構, WdfDmaDirectionWriteToDevice 以取得寫入作業 的DMA_ADAPTER 結構。
如果 DMA 啟用程式是雙工啟用程式,驅動程式必須先初始化特定方向,才能使用它。
如果您的驅動程式未指定雙工配置檔,驅動程式可以指定 WdfDmaDirectionReadFromDevice 或 WdfDmaDirectionWriteToDevice。
範例
下列程式代碼範例來自驅動程式的 EvtDevicePrepareHardware 回呼函式。 此範例會初始化 WDF_DMA_SYSTEM_PROFILE_CONFIG結構, 並呼叫 WdfDmaEnablerConfigureSystemProfile。
WDF_DMA_SYSTEM_PROFILE_CONFIG systemDmaConfig;
PHYSICAL_ADDRESS pa;
pa.QuadPart = 0;
WDF_DMA_SYSTEM_PROFILE_CONFIG_INIT(&systemDmaConfig,
pa,
Width8Bits,
partial);
systemDmaConfig.DemandMode = true;
ntStatus = WdfDmaEnablerConfigureSystemProfile(fdoExtension->DmaEnabler,
&systemDmaConfig,
WdfDmaDirectionReadFromDevice);
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 8 |
目標平台 | Universal |
最低 KMDF 版本 | 1.11 |
標頭 | wdfdmaenabler.h (包含 Wdf.h) |
程式庫 | Wdf01000.sys (請參閱 Framework Library Versioning.) |
IRQL | PASSIVE_LEVEL |
DDI 合規性規則 | DriverCreate (kmdf) |