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 可用來解除分配呼叫 AllocateAdapterChannelEx、GetScatterGatherListEx 和 BuildScatterGatherListEx 例程所配置的 DMA 資源。 如果驅動程式以同步方式呼叫其中一個例程, ExecutionRoutine 參數是選擇性的,而且可以省略。 在此情況下,驅動程式可以使用呼叫所配置的配接器對象和對應緩存器。 在驅動程式起始 DMA 傳輸之後,驅動程式可以呼叫 FreeAdapterObject 來解除分配配接器物件,並視需要對應緩存器。
FreeAdapterChannel 例程類似於 FreeAdapterObject。 FreeAdapterChannel 一律會釋放配接器物件和任何配置的對應緩存器。 如果 AllocationAction = DeallocateObject,此行為類似於 FreeAdapterObject 的行為。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 從 Windows 8 開始提供。 |
目標平台 | 桌面 |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
IRQL | <= DISPATCH_LEVEL |