共用方式為


PFREE_ADAPTER_OBJECT回呼函式 (wdm.h)

FreeAdapterObject 例程會在驅動程式完成所有 DMA 作業之後釋放指定的配接器物件。

語法

PFREE_ADAPTER_OBJECT PfreeAdapterObject;

void PfreeAdapterObject(
  [in] PDMA_ADAPTER DmaAdapter,
  [in] IO_ALLOCATION_ACTION AllocationAction
)
{...}

參數

[in] DmaAdapter

DMA_ADAPTER 結構的指標。 這個結構是要釋放的配接器物件。 此物件代表驅動程式的總線主機 DMA 裝置或系統 DMA 通道。 呼叫端從 先前呼叫IoGetDmaAdapter 例程取得此指標。

[in] AllocationAction

呼叫驅動程式要求的解除分配類型。 將此參數設定為 IO_ALLOCATION_ACTION 列舉值。 如需詳細資訊,請參閱<備註>一節。

傳回值

備註

FreeAdapterObject 不是可直接依名稱呼叫的系統例程。 這個例程只能由 DMA_OPERATIONS結構中 傳回之位址的指標呼叫。 驅動程式會呼叫IoGetDmaAdapter,並將DeviceDescription參數的Version成員設定為DEVICE_DESCRIPTION_VERSION3,以取得此例程的位址。 如果 IoGetDmaAdapter 傳回 NULL,則您的平台上無法使用例程。

如果 AllocationAction = DeallocateObject,FreeAdapterObject 呼叫會釋放配接器物件,並釋放任何可能為此物件配置的對應緩存器。

如果 AllocationAction = DeallocateObjectKeepRegisters,FreeAdapterObject 呼叫會釋放配接器物件,但不會釋放任何地圖緩存器。 在此情況下,驅動程式必須藉由呼叫 FreeMapRegisters 例程,明確地釋放任何配置的地圖緩存器。

如果 AllocationAction = KeepObject,FreeAdapterObject 呼叫就不會有任何作用。

FreeAdapterObject 可用來解除分配呼叫 AllocateAdapterChannelExGetScatterGatherListEx 和 BuildScatterGatherListEx 例程所配置的 DMA 資源。 如果驅動程式以同步方式呼叫其中一個例程, ExecutionRoutine 參數是選擇性的,而且可以省略。 在此情況下,驅動程式可以使用呼叫所配置的配接器對象和對應緩存器。 在驅動程式起始 DMA 傳輸之後,驅動程式可以呼叫 FreeAdapterObject 來解除分配配接器物件,並視需要對應緩存器。

FreeAdapterChannel 例程類似於 FreeAdapterObjectFreeAdapterChannel 一律會釋放配接器物件和任何配置的對應緩存器。 如果 AllocationAction = DeallocateObject,此行為類似於 FreeAdapterObject 的行為。

規格需求

需求
最低支援的用戶端 從 Windows 8 開始提供。
目標平台 桌面
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
IRQL <= DISPATCH_LEVEL

另請參閱

AdapterControl

AdapterListControl

AllocateAdapterChannel

AllocateAdapterChannelEx

BuildScatterGatherListEx

DMA_ADAPTER

DMA_OPERATIONS

FreeAdapterChannel

FreeMapRegisters

GetScatterGatherListEx

IO_ALLOCATION_ACTION

IoGetDmaAdapter